content: [workspace]
  
  resolver = "2"
  members = [
      "crates/scene_viewer",
  ]
  exclude = [".git", "target"]
  
  [workspace.package]
  version = "0.1.0"
  edition = "2021"
  license = "MIT"
  
  [workspace.dependencies]
  # In place transmutation crate for turning shader structs
  # into binary
  bytemuck = { version = "1.14.3", features = ["derive"] }
  futures = "0.3"
  # Vector math library with support for spirv. Required for
  # rust-gpu
  glam = { version = "0.27.0", features = ["serde", "bytemuck"] }
  # Higher level vector math crate built on top of glam which
  # adds more type safety
  glamour = { version = "0.11.1", features = ["serde"] }
  log = "0.4.21"
  # File watcher crate. Currently used to watch the scene.json
  # file and reload it when it changes
  notify = "6.1.1"
  # Color space crate which helps manage conversion between
  # linear and nonlinear rgb color spaces
  palette = { version = "0.7.6", features = ["serializing"] }
  # Embeds files into the compiled binary and provides a way
  # to access the data. Used for embedding the shader spirv
  # code and embedding sprites
  rust-embed = "8.2.0"
  # Standard serialization crates
  serde = "1.0.196"
  serde_derive = "1.0.196"
  serde_json = "1.0.113"
  # Windowing and input library
  winit = "0.30.3"
  
  # Cross platform graphics api based on webgpu. This way we
  # can write our graphics code once and run it everywhere
  [workspace.dependencies.wgpu]
  version = "22.1.0"
  features = ["vulkan-portability", "metal"]
  
  [package]
  name = "vide"
  version.workspace = true
  edition.workspace = true
  license.workspace = true
  
  [dependencies]
  # Encoding to and from a base64 string. Used for storing
  # fonts in the scene json format.
  base64 = "0.22.1"
  # In place transmutation crate for turning shader structs
  # into binary
  bytemuck = { workspace = true }
  # Used to make the error output for shader recompilation easier to read
  codespan-reporting = "0.11.1"
  # Atlas packing crate for carefully fitting rectangles into
  # larger rectangles. Used for the glyph atlas when rendering
  # text
  etagere = "0.2.10"
  futures = {workspace = true }
  glam = { workspace = true }
  glamour = { workspace = true }
  # Adds a few useful collections for dealing with async code
  # like the OneShot
  futures-intrusive = "0.5.0"
  # Image parsing crate. Used for loading png and jpeg images
  image = { version = "0.25", default-features = false, features = ["png", "jpeg"] }
  # Staticly initialize variables using a constructor
  lazy_static = "1.4.0"
  log = { workspace = true }
  # Tesselation crate which lets us turn high level paths into
  # lists of triangles efficiently
  lyon = { version = "1.0.1", features = ["serialization"] }
  # File watcher crate. Used to watch for shader changes
  notify-debouncer-full = "0.3.1"
  # Rust doesn't implement ord for floats which makes deriving
  # hashes hard. This wraps floats and provides a consistent
  # ord implementation
  ordered-float = {version = "4.2.0", features = ["serde"]}
  palette = { workspace = true }
  # Font layout and shaping crate. Handles font fallback
  parley = { git = "https://github.com/linebender/parley", rev="352df194a5178aac3d08519b2e0b8814a8c08c28" }
  # Convenient macros for recording profiling data
  profiling = { version = "1.0.15", features = ["profile-with-tracy"] }
  # Random number generation
  rand = "0.8.5"
  rust-embed = { workspace = true }
  serde = { workspace = true }
  serde_derive = { workspace = true }
  serde_json = { workspace = true }
  # Async runtime for testing
  smol = "1.2"
  # Font introspection, complex text shaping and glyph rendering.
  # NOTE: parley controls the version
  swash = { version="*", default-features = true }
  # Used to make the Shaper thread safe
  thread_local = "1.1.7"
  # Used to make the error output for shader recompilation easier to read
  termcolor = "1.4.1"
  wgpu = { workspace = true, features = ["glsl"] }
  winit = { workspace = true }
  
  [target.'cfg(not(target_os = "macos"))'.dependencies]
  wgpu-profiler = { version = "0.18.0", features = ["tracy"] }
  
  [dev-dependencies]
  image-compare = "0.4.1"
  git2 = "0.18.3"
  