-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCargo.toml
71 lines (66 loc) · 3.01 KB
/
Cargo.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
[package]
name = "goshenite"
version = "0.2.2"
edition = "2021"
license-file = "LICENSE-MIT"
[features]
default = ["colored-term", "include-spirv-bytes"]
# enables colored terminal log messages
colored-term = ["dep:colored"]
# enables a build script to compile spirv binaries when shader source is changed
# NOTE: will add a notable increase to build times if you don't have shaderc libraries installed on your system
shader-compile = ["dep:shaderc"]
# load spirv bytecode at compile-time. if disabled, the engine will attempt to read spirv files from 'assets'
# directory at runtime (relative to the executable location).
include-spirv-bytes = []
[dependencies]
log = "0.4"
# error propogation and backtrace management
anyhow = { version = "1.0", features = ["backtrace"] }
# terminal output formatting
colored = { version = "2.0", optional = true }
# glam is a vector and math library well suited for 3D graphics (noticeably more lightweight than cgmath)
glam = { version = "0.25", features = ["debug-glam-assert", "serde"] }
# winit is a cross-platform window creation and management library (version must match vulkano-win support)
winit = "0.29"
raw-window-handle = "0.6"
# ash is a lightweight vulkan wrapper. note that with default features, the vulkan library will (attempt to) be loaded dynamically at runtime.
ash = "0.37"
# bort has a bunch of helper structs and functions wrapped around ash
bort-vk = { version = "0.2.7", default-features = false, features = ["raw-window-handle-06", "bytemuck"] }
# AMD vulkan memory allocator bindings
bort-vma = { version = "0.3", features = ["vulkan-1-2"] }
# bit-casting crate (for cpu<->gpu buffers)
bytemuck = { version = "1.7", features = ["derive"] }
# egui is a simple and fast ui library
egui = { version = "0.27", features = ["callstack"] }
egui-winit = "0.27"
egui_dnd = { version = "0.3", path = "vendor/egui_dnd-fork" }
# hash library used by egui (fast af boii)
ahash = { version = "0.8", default-features = false, features = [
"no-rng", # we don't need DOS-protection, so we let users opt-in to it instead
"std",
] }
# for offset_of macro
memoffset = "0.8"
# like mpsc::channel but send overwites latest value
single_value_channel = "1.2"
# serde and bincode allow the state of structs (e.g. camera) to be stored and loaded from a file
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
bincode = "1.3"
# load stl files (e.g. coorindate grabbers)
stl_io = "0.7"
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies]
# moltenvk is a vulkan wrapper over metal allowing us to use vulkan on apple platforms
ash-molten = { version = "0.16", features = [
"pre-built", # download pre-built release
] }
[build-dependencies]
# used to compile spirv binaries
# NOTE: if you have shaderc libraries installed on your system, this crate will detect and use them. otherwise shaderc will be compiled.
shaderc = { version = "0.8", optional = true }
# use by doing `cargo build --profile=release-with-debug-info`
[profile.release-with-debug-info]
inherits = "release"
debug = true