Content
Pipeline
Deterministic imports, content addressed caching, and a shared result store. Two engineers on two machines always produce the same cooked output.
Why pipelines drift, and how this one does not
Asset pipelines drift because imports depend on ambient state. The version of a texture compressor on the local box, a flag toggled months ago, a plug in that one artist installed. Crowe Asset Pipeline kills ambient state by sandboxing every import inside a pinned toolchain and hashing every input that contributes to the result.
Two machines with the same input files produce the same output bits. If the bits already exist in the shared cache, the import returns in milliseconds instead of minutes. On a studio network, the first person to import pays the cost and everyone else benefits.
Imports are incremental. Touching a normal map does not rebuild the albedo or recompile the material graph that uses them. A dependency graph tracks exactly what downstream artifacts need refreshing and schedules them on the work queue.
What runs under the hood
Sandboxed importers
Each importer runs in a sandbox with a pinned toolchain. No access to the rest of the workstation. The input hash, the toolchain version, and the importer config are the only things that change the output.
- Pinned toolchain per importer
- Deterministic output given fixed inputs
- Parallel import with dependency scheduling
- Out of process isolation
Virtual textures up to 16k
Streaming virtual textures with tile residency driven by the camera. The importer emits a tile set and a page table, and the runtime streams only the pages visible this frame.
- Virtual textures up to 16k by 16k
- BC and ASTC compression per target
- Mip generation with perceptual weighting
- Tile residency visualizer
LOD and vertex layout
Automatic LOD generation with shape aware decimation and meshlet packing. The importer produces GPU ready vertex buffers with a layout optimized for the shipped renderer on each target.
- Shape aware LOD generation
- Meshlet packing for mesh shaders
- Target specific vertex layout
- Vertex animation texture export
Transcoding and loudness
Source audio transcodes to Opus or ADPCM per platform. Loudness is normalized to the EBU R128 target, then tagged so the mixer can still apply per clip gain at runtime without resampling.
- Opus and ADPCM codec backends
- EBU R128 loudness normalization
- Dynamic range analysis report
- Per platform codec selection
Measured on a shipping project
Baseline numbers from a mid sized codebase with roughly 240 gigabytes of source content, on a ten engineer studio sharing a LAN cache.
Works with
Cook a project
The SDK includes a content only sample. Run one import and watch the cache fill for the whole studio.