Skip to content

Texture Optimization

Preflight texture validation is target-aware:

  • OpenUSD target: correctness/interoperability first
  • RealityKit target: OpenUSD core + platform compatibility/performance checks

A texture is considered healthy when it:

  1. Resolves correctly
  2. Decodes correctly
  3. Uses a target-appropriate container/encoding
  4. Fits target budget
  5. Uses expected colorspace/gamut
  6. Includes mipmaps when required by policy
Terminal window
preflighttool texture analyze scene.usdz --target OpenUSD
preflighttool texture analyze scene.usdz --target visionos --json
Terminal window
preflighttool texture convert albedo.png albedo.ktx2 --format ktx2 --quality best --backend automatic
preflighttool texture convert normal.png normal.png --format png --max-dimension 2048 --backend openSource
preflighttool texture convert albedo.png albedo.ktx2 --format ktx2 --backend appleTextureConverter
  • automatic: recommended default for most workflows
  • openSource: preferred when you want general-purpose OpenUSD-oriented conversion behavior
  • appleTextureConverter: optional backend for KTX2-focused RealityKit workflows (capability-gated at runtime)
  • App-side conversion is in-process (sandbox-safe)
  • App does not depend on spawning TextureConverter CLI subprocesses
  • Runtime capability checks return structured unsupported results when conversion backends are unavailable
  • texture.exceeds_target_budget -> convert with max_dimension
  • texture.colorspace_mismatch -> convert with gamut_out=sRGB
  • texture.no_mips_for_large_textures -> convert with mip generation enabled
  • Texture errors (missing_file, unreadable_or_corrupt) are blocking
  • Texture warnings/advisories degrade Materials score incrementally
  • Score remains in Blocked band while unresolved errors exist