mirror of
https://github.com/bevyengine/bevy
synced 2024-12-13 06:42:29 +00:00
95aa387cd0
# Objective WebP is a modern image format developed by Google that offers a significant reduction in file size compared to other image formats such as PNG and JPEG, while still maintaining good image quality. This makes it particularly useful for games with large numbers of images, such as those with high-quality textures or detailed sprites, where file size and loading times can have a significant impact on performance. By adding support for WebP images in Bevy, game developers using this engine can now take advantage of this modern image format and reduce the memory usage and loading times of their games. This improvement can ultimately result in a better gaming experience for players. In summary, the objective of adding WebP image format support in Bevy is to enable game developers to use a modern image format that provides better compression rates and smaller file sizes, resulting in faster loading times and reduced memory usage for their games. ## Solution To add support for WebP images in Bevy, this pull request leverages the existing `image` crate support for WebP. This implementation is easily integrated into the existing Bevy asset-loading system. To maintain compatibility with existing Bevy projects, WebP image support is disabled by default, and developers can enable it by adding a feature flag to their project's `Cargo.toml` file. With this feature, Bevy becomes even more versatile for game developers and provides a valuable addition to the game engine. --- ## Changelog - Added support for WebP image format in Bevy game engine ## Migration Guide To enable WebP image support in your Bevy project, add the following line to your project's Cargo.toml file: ```toml bevy = { version = "*", features = ["webp"]} ```
81 lines
3 KiB
TOML
81 lines
3 KiB
TOML
[package]
|
|
name = "bevy_render"
|
|
version = "0.11.0-dev"
|
|
edition = "2021"
|
|
description = "Provides rendering functionality for Bevy Engine"
|
|
homepage = "https://bevyengine.org"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
license = "MIT OR Apache-2.0"
|
|
keywords = ["bevy"]
|
|
|
|
[features]
|
|
png = ["image/png"]
|
|
exr = ["image/exr"]
|
|
hdr = ["image/hdr"]
|
|
tga = ["image/tga"]
|
|
jpeg = ["image/jpeg"]
|
|
bmp = ["image/bmp"]
|
|
webp = ["image/webp"]
|
|
dds = ["ddsfile"]
|
|
|
|
# For ktx2 supercompression
|
|
zlib = ["flate2"]
|
|
zstd = ["ruzstd"]
|
|
|
|
trace = ["profiling"]
|
|
tracing-tracy = []
|
|
wgpu_trace = ["wgpu/trace"]
|
|
ci_limits = []
|
|
webgl = ["wgpu/webgl"]
|
|
|
|
[dependencies]
|
|
# bevy
|
|
bevy_app = { path = "../bevy_app", version = "0.11.0-dev" }
|
|
bevy_asset = { path = "../bevy_asset", version = "0.11.0-dev" }
|
|
bevy_core = { path = "../bevy_core", version = "0.11.0-dev" }
|
|
bevy_derive = { path = "../bevy_derive", version = "0.11.0-dev" }
|
|
bevy_ecs = { path = "../bevy_ecs", version = "0.11.0-dev" }
|
|
bevy_encase_derive = { path = "../bevy_encase_derive", version = "0.11.0-dev" }
|
|
bevy_hierarchy = { path = "../bevy_hierarchy", version = "0.11.0-dev" }
|
|
bevy_log = { path = "../bevy_log", version = "0.11.0-dev" }
|
|
bevy_math = { path = "../bevy_math", version = "0.11.0-dev" }
|
|
bevy_mikktspace = { path = "../bevy_mikktspace", version = "0.11.0-dev" }
|
|
bevy_reflect = { path = "../bevy_reflect", version = "0.11.0-dev", features = ["bevy"] }
|
|
bevy_render_macros = { path = "macros", version = "0.11.0-dev" }
|
|
bevy_time = { path = "../bevy_time", version = "0.11.0-dev" }
|
|
bevy_transform = { path = "../bevy_transform", version = "0.11.0-dev" }
|
|
bevy_window = { path = "../bevy_window", version = "0.11.0-dev" }
|
|
bevy_utils = { path = "../bevy_utils", version = "0.11.0-dev" }
|
|
bevy_tasks = { path = "../bevy_tasks", version = "0.11.0-dev" }
|
|
|
|
# rendering
|
|
image = { version = "0.24", default-features = false }
|
|
|
|
# misc
|
|
wgpu = { version = "0.15.0", features = ["spirv"] }
|
|
wgpu-hal = "0.15.1"
|
|
codespan-reporting = "0.11.0"
|
|
naga = { version = "0.11.0", features = ["glsl-in", "spv-in", "spv-out", "wgsl-in", "wgsl-out"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
bitflags = "1.2.1"
|
|
smallvec = { version = "1.6", features = ["union", "const_generics"] }
|
|
once_cell = "1.4.1" # TODO: replace once_cell with std equivalent if/when this lands: https://github.com/rust-lang/rfcs/pull/2788
|
|
downcast-rs = "1.2.0"
|
|
thread_local = "1.1"
|
|
thiserror = "1.0"
|
|
futures-lite = "1.4.0"
|
|
anyhow = "1.0"
|
|
hexasphere = "8.1"
|
|
parking_lot = "0.12.1"
|
|
regex = "1.5"
|
|
ddsfile = { version = "0.5.0", optional = true }
|
|
ktx2 = { version = "0.3.0", optional = true }
|
|
# For ktx2 supercompression
|
|
flate2 = { version = "1.0.22", optional = true }
|
|
ruzstd = { version = "0.2.4", optional = true }
|
|
# For transcoding of UASTC/ETC1S universal formats, and for .basis file support
|
|
basis-universal = { version = "0.2.0", optional = true }
|
|
encase = { version = "0.5", features = ["glam"] }
|
|
# For wgpu profiling using tracing. Use `RUST_LOG=info` to also capture the wgpu spans.
|
|
profiling = { version = "1", features = ["profile-with-tracing"], optional = true }
|
|
async-channel = "1.8"
|