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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
[]
= "bevy_elements"
= "0.7.8"
= "2024"
= "1.97.1"
= "Living environments for Bevy: sun, moon and stars, climate-driven weather, GPU wind, volumetric clouds, rain, snow and fog, lightning, terrain with hydraulic and thermal erosion, flooding, snow cover, wetness and dust — simulated in compute shaders."
= "MIT OR Apache-2.0"
= ["C. Thomas Brittain <cthomasbrittain@yahoo.com>"]
= "https://github.com/bevy-coven/bevy_elements"
= "https://docs.rs/bevy_elements"
= "README.md"
# `bevy` first: it is the term a Bevy user searches, and crates.io weights keyword position.
= ["bevy", "weather", "terrain", "erosion", "atmosphere"]
= ["game-development", "graphics", "rendering"]
= ["assets/*", "docs/*.gif", "docs/*.png", "docs/media/*", "docs/research/*", "tools/*"]
# docs.rs builds with every feature so the optional integrations are visible to someone choosing
# the crate, not only to someone who has already checked out the source.
[]
= true
[]
= []
# `serde` derives on the public settings, presets and messages.
= ["dep:serde"]
# Drive `bevy_flora`'s global wind, season and wetness from this crate (`ElementsFloraPlugin`).
= ["dep:bevy_flora"]
# Volumetric snow on `bevy_isomesh` voxel volumes (`VoxelPlugin`, `VoxelGround`, `SnowyField`).
= ["dep:bevy_isomesh", "dep:isomesh"]
[]
# The umbrella with defaults off. Features unify with the game's full bevy, so this costs a consumer
# nothing; the list is the minimal set for which `cargo build --release` passes.
= { = "0.20.0", = false, = [
"std",
"bevy_asset", # Assets<T>, Handle<T>, embedded shaders, RenderAssetUsages
"bevy_render", # compute pipelines, ShaderBuffer, readback, RenderGraph schedule
"bevy_core_pipeline", # Core3d schedule, camera_driver, DepthPrepass
"bevy_pbr", # AtmosphereSettings, DistanceFog, materials
"bevy_light", # DirectionalLight, Atmosphere, SunDisk, FogVolume, VolumetricFog
"bevy_camera", # Camera, Hdr, Exposure, Projection
"bevy_image", # Image, 3D storage textures, samplers
"bevy_mesh", # Mesh for the star field and the moon disc
"bevy_shader", # Shader, load_shader_library!, ShaderCacheError
"bevy_log", # warn!/error! for misconfiguration and failed kernels
"bevy_color", # Color for lights and fog
] }
= { = "1", = ["derive"], = true }
# Plain-old-data casts for the GPU uniform structs and the readback decode.
= { = "1", = ["derive"] }
# Optional sibling: trees and their wind, season and wetness belong to `bevy_flora`; this crate
# only writes its public resources (feature `flora`). Same Bevy minor (0.20).
= { = "0.46", = true, = false }
# bevy_isomesh 0.0.10 is built on Bevy 0.19 and lacks `replace_field` and `IsomeshSystems`, and
# bevy_isomesh 0.0.11 needs isomesh 0.0.11 exactly, so both stay at 0.0.11
# (`docs/research/voxel-volumes.md`, Deviation 1).
= { = "0.0.11", = true }
= { = "0.0.11", = true }
# **Tests and examples only.** The examples need a window and the full 3D pipeline, so they take the
# full umbrella here, where it cannot reach a consumer's dependency graph. `tests/leaf.rs` reads
# `[dependencies]` only, deliberately.
[]
# `jpeg`: the examples' ground texture maps (`assets/ground/`); the crate itself loads no images.
= { = "0.20.0", = ["jpeg"] }
= "1"
= "0.4"
# Compute shaders are not in WebGL2, so wasm means WebGPU. `web` makes `bevy::platform::time::Instant`
# use `web_time` rather than a `std::time::Instant` whose `now()` panics on wasm.
[]
= { = "0.20.0", = false, = ["web", "webgpu"] }
[[]]
= "flora_wind"
= ["flora"]
[[]]
= "voxel_snow"
= ["isomesh"]
[[]]
= "voxel_walls"
= ["isomesh"]
[[]]
= "save"
= ["serde"]
[[]]
= "setup"
= ["serde"]
[[]]
= "surface_setup"
= ["serde"]
[]
= "warn"
= "forbid"
[]
= { = "warn", = -1 }
= "deny"
= "deny"
= "deny"
# Simulation and rendering in a debug build is 20-50x slower and makes it look as if the algorithm
# is wrong rather than the profile. Examples are always run with --release; this keeps a debug run
# merely slow rather than unusable. debuginfo 0 rather than the default 2: a Bevy example's
# debuginfo link ran CI's 7 GB runner out of memory (`ld terminated with signal 7 [Bus
# error]`, twice, on `weathered_town` and `erosion_bake`; bevy_isomesh measured the same
# size at ~2 GB per example). A backtrace still has function names without line numbers.
[]
= 3
[]
= 1
= 0
# Bevy's wasm binary is size-bound, not arithmetic-bound, so `s` beats `3` and `thin` beats `fat`:
# fat LTO on a 30 MB module costs minutes per example. `strip = "debuginfo"` rather than `true`
# because the name section is dropped by `wasm-bindgen`, the tool that knows what it may drop.
[]
= "release"
= "s"
= "thin"
= 1
= "debuginfo"