bevy/crates/bevy_internal/Cargo.toml
Antonin Peronnet b574599444
don't use bevy_pbr for base bevy_gizmos plugin (#17581)
# Objective

This PR enables `bevy_gizmos` to be used without `bevy_pbr`, for user
who want to create their custom mesh rendering logic.

It can also be useful for user who just want to use bevy for drawing
lines (why not).

This work is part of a bigger effort to make the bevy rendering pipeline
more modular. I would like to contribute an exemple to render custom
meshes without `bevy_pbr`. Something like
[this](https://github.com/rambip/plant-mesh/blob/main/src/shader/mod.rs)

## Solution

Now, `bevy_pbr` is an optional dependency, and used only to debug
lights.

I query the `ViewUniforms` manually, instead of using `bevy_pbr` to get
the heavy `MeshViewLayout`

## Testing

I'm not used to testing with bevy at all, but I was able to use
successfully in my project.
It might break for some different mesh pipelines, but I don't think so.

---

## Showcase


![image](https://github.com/user-attachments/assets/7fa22d1c-8b4f-456b-a74b-1a579449e9f5)
So nice ...

## Migration Guide

I don't think there is any breaking change


# Remaining work

Before merging it, it would be useful to:
- rewrite the `pipeline_2d.rs` logic to remove the `bevy_sprite`
depedency too
- move `view.rs` to `bevy_render`, so that it can be used in a more
modular way.
~~- include the most recent changes from 0.16~~

---------

Co-authored-by: IceSentry <IceSentry@users.noreply.github.com>
2025-03-10 21:16:52 +00:00

432 lines
14 KiB
TOML

[package]
name = "bevy_internal"
version = "0.16.0-dev"
edition = "2024"
description = "An internal Bevy crate used to facilitate optional dynamic linking via the 'dynamic_linking' feature"
homepage = "https://bevyengine.org"
repository = "https://github.com/bevyengine/bevy"
license = "MIT OR Apache-2.0"
keywords = ["game", "engine", "gamedev", "graphics", "bevy"]
categories = ["game-engines", "graphics", "gui", "rendering"]
[features]
trace = [
"bevy_app/trace",
"bevy_asset?/trace",
"bevy_core_pipeline?/trace",
"bevy_ecs/trace",
"bevy_log/trace",
"bevy_pbr?/trace",
"bevy_render?/trace",
"bevy_winit?/trace",
]
trace_chrome = ["bevy_log/tracing-chrome"]
trace_tracy = ["bevy_render?/tracing-tracy", "bevy_log/tracing-tracy"]
trace_tracy_memory = ["bevy_log/trace_tracy_memory"]
detailed_trace = ["bevy_ecs/detailed_trace", "bevy_render?/detailed_trace"]
sysinfo_plugin = ["bevy_diagnostic/sysinfo_plugin"]
# Texture formats that have specific rendering support (HDR enabled by default)
basis-universal = ["bevy_image/basis-universal", "bevy_render/basis-universal"]
dds = [
"bevy_image/dds",
"bevy_render/dds",
"bevy_core_pipeline/dds",
"bevy_gltf?/dds",
]
exr = ["bevy_image/exr", "bevy_render/exr"]
hdr = ["bevy_image/hdr", "bevy_render/hdr"]
ktx2 = ["bevy_image/ktx2", "bevy_render/ktx2"]
# For ktx2 supercompression
zlib = ["bevy_image/zlib"]
zstd = ["bevy_image/zstd"]
# Image format support (PNG enabled by default)
bmp = ["bevy_image/bmp"]
ff = ["bevy_image/ff"]
gif = ["bevy_image/gif"]
ico = ["bevy_image/ico"]
jpeg = ["bevy_image/jpeg"]
png = ["bevy_image/png"]
pnm = ["bevy_image/pnm"]
qoi = ["bevy_image/qoi"]
tga = ["bevy_image/tga"]
tiff = ["bevy_image/tiff"]
webp = ["bevy_image/webp"]
# Enable SPIR-V passthrough
spirv_shader_passthrough = ["bevy_render/spirv_shader_passthrough"]
# Statically linked DXC shader compiler for DirectX 12
# TODO: When wgpu switches to DirectX 12 instead of Vulkan by default on windows, make this a default feature
statically-linked-dxc = ["bevy_render/statically-linked-dxc"]
# Include tonemapping LUT KTX2 files.
tonemapping_luts = ["bevy_core_pipeline/tonemapping_luts"]
# Include SMAA LUT KTX2 Files
smaa_luts = ["bevy_core_pipeline/smaa_luts"]
# Audio format support (vorbis is enabled by default)
flac = ["bevy_audio/flac"]
mp3 = ["bevy_audio/mp3"]
vorbis = ["bevy_audio/vorbis"]
wav = ["bevy_audio/wav"]
minimp3 = ["bevy_audio/minimp3"]
symphonia-aac = ["bevy_audio/symphonia-aac"]
symphonia-all = ["bevy_audio/symphonia-all"]
symphonia-flac = ["bevy_audio/symphonia-flac"]
symphonia-isomp4 = ["bevy_audio/symphonia-isomp4"]
symphonia-vorbis = ["bevy_audio/symphonia-vorbis"]
symphonia-wav = ["bevy_audio/symphonia-wav"]
# Shader formats
shader_format_glsl = [
"bevy_render/shader_format_glsl",
"bevy_pbr?/shader_format_glsl",
]
shader_format_spirv = ["bevy_render/shader_format_spirv"]
shader_format_wesl = ["bevy_render/shader_format_wesl"]
serialize = [
"bevy_a11y?/serialize",
"bevy_color?/serialize",
"bevy_ecs/serialize",
"bevy_image?/serialize",
"bevy_input/serialize",
"bevy_math/serialize",
"bevy_scene?/serialize",
"bevy_time/serialize",
"bevy_transform/serialize",
"bevy_ui?/serialize",
"bevy_window?/serialize",
"bevy_winit?/serialize",
"bevy_platform_support/serialize",
]
multi_threaded = [
"std",
"bevy_asset?/multi_threaded",
"bevy_ecs/multi_threaded",
"bevy_render?/multi_threaded",
"bevy_tasks/multi_threaded",
]
async-io = ["std", "bevy_tasks/async-io"]
# Display server protocol support (X11 is enabled by default)
wayland = ["bevy_winit/wayland"]
x11 = ["bevy_winit/x11"]
# Android activity support (choose one)
android-native-activity = ["bevy_winit/android-native-activity"]
android-game-activity = ["bevy_winit/android-game-activity"]
# Transmission textures in `StandardMaterial`:
pbr_transmission_textures = [
"bevy_pbr?/pbr_transmission_textures",
"bevy_gltf?/pbr_transmission_textures",
]
# Multi-layer material textures in `StandardMaterial`:
pbr_multi_layer_material_textures = [
"bevy_pbr?/pbr_multi_layer_material_textures",
"bevy_gltf?/pbr_multi_layer_material_textures",
]
# Anisotropy texture in `StandardMaterial`:
pbr_anisotropy_texture = [
"bevy_pbr?/pbr_anisotropy_texture",
"bevy_gltf?/pbr_anisotropy_texture",
]
# Percentage-closer soft shadows
experimental_pbr_pcss = ["bevy_pbr?/experimental_pbr_pcss"]
# Specular textures in `StandardMaterial`:
pbr_specular_textures = [
"bevy_pbr?/pbr_specular_textures",
"bevy_gltf?/pbr_specular_textures",
]
# Optimise for WebGL2
webgl = [
"bevy_core_pipeline?/webgl",
"bevy_pbr?/webgl",
"bevy_render?/webgl",
"bevy_gizmos?/webgl",
"bevy_sprite?/webgl",
]
webgpu = [
"bevy_core_pipeline?/webgpu",
"bevy_pbr?/webgpu",
"bevy_render?/webgpu",
"bevy_gizmos?/webgpu",
"bevy_sprite?/webgpu",
]
# enable systems that allow for automated testing on CI
bevy_ci_testing = ["bevy_dev_tools/bevy_ci_testing", "bevy_render?/ci_limits"]
# Enable animation support, and glTF animation loading
animation = ["bevy_animation", "bevy_gltf?/bevy_animation"]
bevy_sprite = ["dep:bevy_sprite", "bevy_gizmos", "bevy_image"]
bevy_pbr = ["dep:bevy_pbr", "bevy_gizmos?/bevy_pbr", "bevy_image"]
bevy_window = ["dep:bevy_window", "dep:bevy_a11y"]
bevy_core_pipeline = ["dep:bevy_core_pipeline", "bevy_image"]
bevy_gizmos = ["dep:bevy_gizmos", "bevy_image"]
bevy_gltf = ["dep:bevy_gltf", "bevy_image"]
bevy_ui = ["dep:bevy_ui", "bevy_image"]
bevy_image = ["dep:bevy_image"]
# Used to disable code that is unsupported when Bevy is dynamically linked
dynamic_linking = ["bevy_diagnostic/dynamic_linking"]
# Enable using a shared stdlib for cxx on Android.
android_shared_stdcxx = ["bevy_audio/android_shared_stdcxx"]
# Enable AccessKit on Unix backends (currently only works with experimental
# screen readers and forks.)
accesskit_unix = ["bevy_winit/accesskit_unix"]
bevy_text = ["dep:bevy_text", "bevy_image"]
bevy_render = [
"dep:bevy_render",
"bevy_scene?/bevy_render",
"bevy_gizmos?/bevy_render",
"bevy_image",
"bevy_color/wgpu-types",
"bevy_color/encase",
]
# Enable assertions to check the validity of parameters passed to glam
glam_assert = ["bevy_math/glam_assert"]
# Enable assertions in debug builds to check the validity of parameters passed to glam
debug_glam_assert = ["bevy_math/debug_glam_assert"]
default_font = ["bevy_text?/default_font"]
# Enables the built-in asset processor for processed assets.
asset_processor = ["bevy_asset?/asset_processor"]
# Enables watching the filesystem for Bevy Asset hot-reloading
file_watcher = ["bevy_asset?/file_watcher"]
# Enables watching embedded files for Bevy Asset hot-reloading
embedded_watcher = ["bevy_asset?/embedded_watcher"]
# Enable system stepping support
bevy_debug_stepping = [
"bevy_ecs/bevy_debug_stepping",
"bevy_app/bevy_debug_stepping",
]
# Enables the meshlet renderer for dense high-poly scenes (experimental)
meshlet = ["bevy_pbr?/meshlet"]
# Enables processing meshes into meshlet meshes for bevy_pbr
meshlet_processor = ["bevy_pbr?/meshlet_processor"]
# Provides a collection of developer tools
bevy_dev_tools = ["dep:bevy_dev_tools"]
# Enable support for the Bevy Remote Protocol
bevy_remote = ["dep:bevy_remote", "serialize"]
# Provides picking functionality
bevy_picking = ["dep:bevy_picking"]
# Provides a mesh picking backend
bevy_mesh_picking_backend = [
"bevy_picking",
"bevy_picking/bevy_mesh_picking_backend",
]
# Provides a sprite picking backend
bevy_sprite_picking_backend = [
"bevy_picking",
"bevy_sprite/bevy_sprite_picking_backend",
]
# Provides a UI picking backend
bevy_ui_picking_backend = ["bevy_picking", "bevy_ui/bevy_ui_picking_backend"]
# Provides a UI debug overlay
bevy_ui_debug = ["bevy_ui?/bevy_ui_debug"]
# Enable built in global state machines
bevy_state = ["dep:bevy_state"]
# Enables source location tracking for change detection, which can assist with debugging
track_location = ["bevy_ecs/track_location"]
# Enable function reflection
reflect_functions = [
"bevy_reflect/functions",
"bevy_app/reflect_functions",
"bevy_ecs/reflect_functions",
]
# Enable documentation reflection
reflect_documentation = ["bevy_reflect/documentation"]
# Enable winit custom cursor support
custom_cursor = ["bevy_winit/custom_cursor"]
# Experimental support for nodes that are ignored for UI layouting
ghost_nodes = ["bevy_ui/ghost_nodes"]
# Allows access to the `std` crate. Enabling this feature will prevent compilation
# on `no_std` targets, but provides access to certain additional features on
# supported platforms.
std = [
"bevy_a11y?/std",
"bevy_app/std",
"bevy_color?/std",
"bevy_diagnostic/std",
"bevy_ecs/std",
"bevy_input/std",
"bevy_input_focus?/std",
"bevy_math/std",
"bevy_platform_support/std",
"bevy_reflect/std",
"bevy_state?/std",
"bevy_time/std",
"bevy_transform/std",
"bevy_utils/std",
"bevy_tasks/std",
"bevy_window?/std",
]
# `critical-section` provides the building blocks for synchronization primitives
# on all platforms, including `no_std`.
critical-section = [
"bevy_a11y?/critical-section",
"bevy_app/critical-section",
"bevy_diagnostic/critical-section",
"bevy_ecs/critical-section",
"bevy_input/critical-section",
"bevy_input_focus?/critical-section",
"bevy_platform_support/critical-section",
"bevy_reflect/critical-section",
"bevy_state?/critical-section",
"bevy_time/critical-section",
"bevy_utils/critical-section",
"bevy_tasks/critical-section",
]
# Uses the `libm` maths library instead of the one provided in `std` and `core`.
libm = [
"bevy_a11y?/libm",
"bevy_color?/libm",
"bevy_input/libm",
"bevy_input_focus?/libm",
"bevy_math/libm",
"bevy_transform/libm",
"bevy_window?/libm",
]
# Uses `async-executor` as a task execution backend.
# This backend is incompatible with `no_std` targets.
async_executor = [
"std",
"bevy_tasks/async_executor",
"bevy_ecs/async_executor",
"bevy_transform/async_executor",
]
# Enables use of browser APIs.
# Note this is currently only applicable on `wasm32` architectures.
web = [
"bevy_app/web",
"bevy_platform_support/web",
"bevy_reflect/web",
"bevy_tasks/web",
]
[dependencies]
# bevy (no_std)
bevy_app = { path = "../bevy_app", version = "0.16.0-dev", default-features = false, features = [
"bevy_reflect",
] }
bevy_derive = { path = "../bevy_derive", version = "0.16.0-dev", default-features = false }
bevy_diagnostic = { path = "../bevy_diagnostic", version = "0.16.0-dev", default-features = false }
bevy_ecs = { path = "../bevy_ecs", version = "0.16.0-dev", default-features = false, features = [
"bevy_reflect",
] }
bevy_input = { path = "../bevy_input", version = "0.16.0-dev", default-features = false, features = [
"bevy_reflect",
], optional = true }
bevy_math = { path = "../bevy_math", version = "0.16.0-dev", default-features = false, features = [
"bevy_reflect",
], optional = true }
bevy_platform_support = { path = "../bevy_platform_support", version = "0.16.0-dev", default-features = false, features = [
"alloc",
] }
bevy_ptr = { path = "../bevy_ptr", version = "0.16.0-dev", default-features = false }
bevy_reflect = { path = "../bevy_reflect", version = "0.16.0-dev", default-features = false, features = [
"smallvec",
] }
bevy_time = { path = "../bevy_time", version = "0.16.0-dev", default-features = false, features = [
"bevy_reflect",
] }
bevy_transform = { path = "../bevy_transform", version = "0.16.0-dev", default-features = false, features = [
"bevy-support",
"bevy_reflect",
], optional = true }
bevy_utils = { path = "../bevy_utils", version = "0.16.0-dev", default-features = false, features = [
"alloc",
] }
bevy_tasks = { path = "../bevy_tasks", version = "0.16.0-dev", default-features = false }
# bevy (std required)
bevy_log = { path = "../bevy_log", version = "0.16.0-dev", optional = true }
# bevy (optional)
bevy_a11y = { path = "../bevy_a11y", optional = true, version = "0.16.0-dev", features = [
"bevy_reflect",
] }
bevy_animation = { path = "../bevy_animation", optional = true, version = "0.16.0-dev" }
bevy_asset = { path = "../bevy_asset", optional = true, version = "0.16.0-dev" }
bevy_audio = { path = "../bevy_audio", optional = true, version = "0.16.0-dev" }
bevy_color = { path = "../bevy_color", optional = true, version = "0.16.0-dev", default-features = false, features = [
"alloc",
"bevy_reflect",
] }
bevy_core_pipeline = { path = "../bevy_core_pipeline", optional = true, version = "0.16.0-dev" }
bevy_dev_tools = { path = "../bevy_dev_tools", optional = true, version = "0.16.0-dev" }
bevy_gilrs = { path = "../bevy_gilrs", optional = true, version = "0.16.0-dev" }
bevy_gizmos = { path = "../bevy_gizmos", optional = true, version = "0.16.0-dev", default-features = false }
bevy_gltf = { path = "../bevy_gltf", optional = true, version = "0.16.0-dev" }
bevy_image = { path = "../bevy_image", optional = true, version = "0.16.0-dev" }
bevy_input_focus = { path = "../bevy_input_focus", optional = true, version = "0.16.0-dev", default-features = false, features = [
"bevy_reflect",
] }
bevy_pbr = { path = "../bevy_pbr", optional = true, version = "0.16.0-dev" }
bevy_picking = { path = "../bevy_picking", optional = true, version = "0.16.0-dev" }
bevy_remote = { path = "../bevy_remote", optional = true, version = "0.16.0-dev" }
bevy_render = { path = "../bevy_render", optional = true, version = "0.16.0-dev" }
bevy_scene = { path = "../bevy_scene", optional = true, version = "0.16.0-dev" }
bevy_sprite = { path = "../bevy_sprite", optional = true, version = "0.16.0-dev" }
bevy_state = { path = "../bevy_state", optional = true, version = "0.16.0-dev", default-features = false, features = [
"bevy_app",
"bevy_reflect",
] }
bevy_text = { path = "../bevy_text", optional = true, version = "0.16.0-dev" }
bevy_ui = { path = "../bevy_ui", optional = true, version = "0.16.0-dev" }
bevy_window = { path = "../bevy_window", optional = true, version = "0.16.0-dev", default-features = false, features = [
"bevy_reflect",
] }
bevy_winit = { path = "../bevy_winit", optional = true, version = "0.16.0-dev" }
[lints]
workspace = true
[package.metadata.docs.rs]
rustdoc-args = ["-Zunstable-options", "--generate-link-to-definition"]
all-features = true