Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create bevy_render_2d crate #18467

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -143,6 +143,7 @@ default = [
"bevy_pbr",
"bevy_picking",
"bevy_render",
"bevy_render_2d",
"bevy_scene",
"bevy_sprite",
"bevy_sprite_picking_backend",
@@ -242,13 +243,17 @@ bevy_picking = ["bevy_internal/bevy_picking"]
# Provides rendering functionality
bevy_render = ["bevy_internal/bevy_render", "bevy_color"]

# Provides functionality for rendering in 2d
bevy_render_2d = ["bevy_internal/bevy_render_2d"]

# Provides scene functionality
bevy_scene = ["bevy_internal/bevy_scene", "bevy_asset"]

# Provides sprite functionality
bevy_sprite = [
"bevy_internal/bevy_sprite",
"bevy_render",
"bevy_render_2d",
"bevy_core_pipeline",
"bevy_color",
"bevy_anti_aliasing",
2 changes: 1 addition & 1 deletion crates/bevy_gizmos/Cargo.toml
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ bevy_render = ["dep:bevy_render", "bevy_core_pipeline"]
[dependencies]
# Bevy
bevy_pbr = { path = "../bevy_pbr", version = "0.16.0-dev", optional = true }
bevy_sprite = { path = "../bevy_sprite", version = "0.16.0-dev", optional = true }
bevy_render_2d = { path = "../bevy_render_2d", version = "0.16.0-dev", optional = true }
bevy_app = { path = "../bevy_app", version = "0.16.0-dev" }
bevy_color = { path = "../bevy_color", version = "0.16.0-dev" }
bevy_ecs = { path = "../bevy_ecs", version = "0.16.0-dev" }
4 changes: 2 additions & 2 deletions crates/bevy_gizmos/src/config.rs
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ pub use bevy_gizmos_macros::GizmoConfigGroup;

#[cfg(all(
feature = "bevy_render",
any(feature = "bevy_pbr", feature = "bevy_sprite")
any(feature = "bevy_pbr", feature = "bevy_render_2d")
))]
use {crate::GizmoAsset, bevy_asset::Handle, bevy_ecs::component::Component};

@@ -246,7 +246,7 @@ impl Default for GizmoLineConfig {

#[cfg(all(
feature = "bevy_render",
any(feature = "bevy_pbr", feature = "bevy_sprite")
any(feature = "bevy_pbr", feature = "bevy_render_2d")
))]
#[derive(Component)]
pub(crate) struct GizmoMeshConfig {
26 changes: 13 additions & 13 deletions crates/bevy_gizmos/src/lib.rs
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ extern crate self as bevy_gizmos;
#[derive(SystemSet, Clone, Debug, Hash, PartialEq, Eq)]
pub enum GizmoRenderSystem {
/// Adds gizmos to the [`Transparent2d`](bevy_core_pipeline::core_2d::Transparent2d) render phase
#[cfg(feature = "bevy_sprite")]
#[cfg(feature = "bevy_render_2d")]
QueueLineGizmos2d,
/// Adds gizmos to the [`Transparent3d`](bevy_core_pipeline::core_3d::Transparent3d) render phase
#[cfg(feature = "bevy_pbr")]
@@ -50,7 +50,7 @@ pub mod rounded_box;
#[cfg(all(feature = "bevy_pbr", feature = "bevy_render"))]
pub mod light;

#[cfg(all(feature = "bevy_sprite", feature = "bevy_render"))]
#[cfg(all(feature = "bevy_render_2d", feature = "bevy_render"))]
mod pipeline_2d;
#[cfg(all(feature = "bevy_pbr", feature = "bevy_render"))]
mod pipeline_3d;
@@ -90,7 +90,7 @@ use bevy_reflect::TypePath;

#[cfg(all(
feature = "bevy_render",
any(feature = "bevy_pbr", feature = "bevy_sprite")
any(feature = "bevy_pbr", feature = "bevy_render_2d")
))]
use crate::config::GizmoMeshConfig;

@@ -127,7 +127,7 @@ use {

#[cfg(all(
feature = "bevy_render",
any(feature = "bevy_pbr", feature = "bevy_sprite"),
any(feature = "bevy_pbr", feature = "bevy_render_2d"),
))]
use bevy_render::render_resource::{VertexAttribute, VertexBufferLayout, VertexStepMode};
use bevy_time::Fixed;
@@ -148,7 +148,7 @@ const LINE_JOINT_SHADER_HANDLE: Handle<Shader> =

/// A [`Plugin`] that provides an immediate mode drawing api for visual debugging.
///
/// Requires to be loaded after [`PbrPlugin`](bevy_pbr::PbrPlugin) or [`SpritePlugin`](bevy_sprite::SpritePlugin).
/// Requires to be loaded after [`PbrPlugin`](bevy_pbr::PbrPlugin) or [`Mesh2dRenderPlugin`](bevy_render_2d::mesh_pipeline::Mesh2dRenderPlugin).
#[derive(Default)]
pub struct GizmoPlugin;

@@ -190,11 +190,11 @@ impl Plugin for GizmoPlugin {

render_app.add_systems(ExtractSchedule, (extract_gizmo_data, extract_linegizmos));

#[cfg(feature = "bevy_sprite")]
if app.is_plugin_added::<bevy_sprite::SpritePlugin>() {
#[cfg(feature = "bevy_render_2d")]
if app.is_plugin_added::<bevy_render_2d::mesh_pipeline::Mesh2dRenderPlugin>() {
app.add_plugins(pipeline_2d::LineGizmo2dPlugin);
} else {
tracing::warn!("bevy_sprite feature is enabled but bevy_sprite::SpritePlugin was not detected. Are you sure you loaded GizmoPlugin after SpritePlugin?");
tracing::warn!("bevy_render_2d feature is enabled but bevy_render_2d::mesh_pipeline::Mesh2dRenderPlugin was not detected. Are you sure you loaded GizmoPlugin after Mesh2dRenderPlugin?");
}
#[cfg(feature = "bevy_pbr")]
if app.is_plugin_added::<bevy_pbr::PbrPlugin>() {
@@ -474,7 +474,7 @@ fn extract_gizmo_data(
#[cfg(feature = "webgl")]
_padding: Default::default(),
},
#[cfg(any(feature = "bevy_pbr", feature = "bevy_sprite"))]
#[cfg(any(feature = "bevy_pbr", feature = "bevy_render_2d"))]
GizmoMeshConfig {
line_perspective: config.line.perspective,
line_style: config.line.style,
@@ -655,7 +655,7 @@ impl<const I: usize, P: PhaseItem> RenderCommand<P> for SetLineGizmoBindGroup<I>
struct DrawLineGizmo<const STRIP: bool>;
#[cfg(all(
feature = "bevy_render",
any(feature = "bevy_pbr", feature = "bevy_sprite")
any(feature = "bevy_pbr", feature = "bevy_render_2d")
))]
impl<P: PhaseItem, const STRIP: bool> RenderCommand<P> for DrawLineGizmo<STRIP> {
type Param = SRes<RenderAssets<GpuLineGizmo>>;
@@ -718,7 +718,7 @@ impl<P: PhaseItem, const STRIP: bool> RenderCommand<P> for DrawLineGizmo<STRIP>
struct DrawLineJointGizmo;
#[cfg(all(
feature = "bevy_render",
any(feature = "bevy_pbr", feature = "bevy_sprite")
any(feature = "bevy_pbr", feature = "bevy_render_2d")
))]
impl<P: PhaseItem> RenderCommand<P> for DrawLineJointGizmo {
type Param = SRes<RenderAssets<GpuLineGizmo>>;
@@ -791,7 +791,7 @@ impl<P: PhaseItem> RenderCommand<P> for DrawLineJointGizmo {

#[cfg(all(
feature = "bevy_render",
any(feature = "bevy_pbr", feature = "bevy_sprite")
any(feature = "bevy_pbr", feature = "bevy_render_2d")
))]
fn line_gizmo_vertex_buffer_layouts(strip: bool) -> Vec<VertexBufferLayout> {
use VertexFormat::*;
@@ -849,7 +849,7 @@ fn line_gizmo_vertex_buffer_layouts(strip: bool) -> Vec<VertexBufferLayout> {

#[cfg(all(
feature = "bevy_render",
any(feature = "bevy_pbr", feature = "bevy_sprite")
any(feature = "bevy_pbr", feature = "bevy_render_2d")
))]
fn line_joint_gizmo_vertex_buffer_layouts() -> Vec<VertexBufferLayout> {
use VertexFormat::*;
10 changes: 5 additions & 5 deletions crates/bevy_gizmos/src/pipeline_2d.rs
Original file line number Diff line number Diff line change
@@ -27,7 +27,10 @@ use bevy_render::{
view::{ExtractedView, Msaa, RenderLayers, ViewTarget},
Render, RenderApp, RenderSet,
};
use bevy_sprite::{Mesh2dPipeline, Mesh2dPipelineKey, SetMesh2dViewBindGroup};
use bevy_render_2d::mesh_pipeline::{
commands::SetMesh2dViewBindGroup,
pipeline::{Mesh2dPipeline, Mesh2dPipelineKey},
};
use tracing::error;

pub struct LineGizmo2dPlugin;
@@ -48,10 +51,7 @@ impl Plugin for LineGizmo2dPlugin {
Render,
GizmoRenderSystem::QueueLineGizmos2d
.in_set(RenderSet::Queue)
.ambiguous_with(bevy_sprite::queue_sprites)
.ambiguous_with(
bevy_sprite::queue_material2d_meshes::<bevy_sprite::ColorMaterial>,
),
.before(RenderSet::QueueMeshes),
)
.add_systems(
Render,
2 changes: 1 addition & 1 deletion crates/bevy_gizmos/src/retained.rs
Original file line number Diff line number Diff line change
@@ -143,7 +143,7 @@ pub(crate) fn extract_linegizmos(
#[cfg(feature = "webgl")]
_padding: Default::default(),
},
#[cfg(any(feature = "bevy_pbr", feature = "bevy_sprite"))]
#[cfg(any(feature = "bevy_pbr", feature = "bevy_render_2d"))]
crate::config::GizmoMeshConfig {
line_perspective: gizmo.line_config.perspective,
line_style: gizmo.line_config.style,
5 changes: 4 additions & 1 deletion crates/bevy_internal/Cargo.toml
Original file line number Diff line number Diff line change
@@ -176,7 +176,7 @@ 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_sprite", "bevy_image"]
bevy_sprite = ["dep:bevy_sprite", "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"]
@@ -207,6 +207,8 @@ bevy_render = [
"bevy_color/encase",
]

bevy_render_2d = ["dep:bevy_render_2d", "bevy_gizmos?/bevy_render_2d"]

# Enable assertions to check the validity of parameters passed to glam
glam_assert = ["bevy_math/glam_assert"]

@@ -418,6 +420,7 @@ 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_render_2d = { path = "../bevy_render_2d", 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 = [
2 changes: 2 additions & 0 deletions crates/bevy_internal/src/default_plugins.rs
Original file line number Diff line number Diff line change
@@ -40,6 +40,8 @@ plugin_group! {
bevy_render::pipelined_rendering:::PipelinedRenderingPlugin,
#[cfg(feature = "bevy_core_pipeline")]
bevy_core_pipeline:::CorePipelinePlugin,
#[cfg(feature = "bevy_render_2d")]
bevy_render_2d::mesh_pipeline:::Mesh2dRenderPlugin,
#[cfg(feature = "bevy_anti_aliasing")]
bevy_anti_aliasing:::AntiAliasingPlugin,
#[cfg(feature = "bevy_sprite")]
2 changes: 2 additions & 0 deletions crates/bevy_internal/src/lib.rs
Original file line number Diff line number Diff line change
@@ -60,6 +60,8 @@ pub use bevy_reflect as reflect;
pub use bevy_remote as remote;
#[cfg(feature = "bevy_render")]
pub use bevy_render as render;
#[cfg(feature = "bevy_render_2d")]
pub use bevy_render_2d as render_2d;
#[cfg(feature = "bevy_scene")]
pub use bevy_scene as scene;
#[cfg(feature = "bevy_sprite")]
4 changes: 4 additions & 0 deletions crates/bevy_internal/src/prelude.rs
Original file line number Diff line number Diff line change
@@ -50,6 +50,10 @@ pub use crate::pbr::prelude::*;
#[cfg(feature = "bevy_render")]
pub use crate::render::prelude::*;

#[doc(hidden)]
#[cfg(feature = "bevy_render_2d")]
pub use crate::render_2d::prelude::*;

#[doc(hidden)]
#[cfg(feature = "bevy_scene")]
pub use crate::scene::prelude::*;
40 changes: 40 additions & 0 deletions crates/bevy_render_2d/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
[package]
name = "bevy_render_2d"
version = "0.16.0-dev"
edition = "2024"
description = "Provides functionality for rendering in 2d for Bevy Engine"
homepage = "https://bevyengine.org"
repository = "https://github.com/bevyengine/bevy"
license = "MIT OR Apache-2.0"
keywords = ["bevy"]

[features]

[dependencies]
bevy_app = { path = "../bevy_app", version = "0.16.0-dev" }
bevy_asset = { path = "../bevy_asset", version = "0.16.0-dev" }
bevy_core_pipeline = { path = "../bevy_core_pipeline", version = "0.16.0-dev" }
bevy_derive = { path = "../bevy_derive", version = "0.16.0-dev" }
bevy_ecs = { path = "../bevy_ecs", version = "0.16.0-dev" }
bevy_image = { path = "../bevy_image", version = "0.16.0-dev" }
bevy_math = { path = "../bevy_math", version = "0.16.0-dev" }
bevy_platform_support = { path = "../bevy_platform_support", version = "0.16.0-dev" }
bevy_reflect = { path = "../bevy_reflect", version = "0.16.0-dev" }
bevy_render = { path = "../bevy_render", version = "0.16.0-dev" }
bevy_transform = { path = "../bevy_transform", version = "0.16.0-dev" }

bitflags = "2.3"
derive_more = { version = "1", default-features = false, features = ["from"] }
nonmax = "0.5"
tracing = { version = "0.1", default-features = false, features = ["std"] }

[dev-dependencies]
# used on doc tests
bevy_color = { path = "../bevy_color", version = "0.16.0-dev" }

[lints]
workspace = true

[package.metadata.docs.rs]
rustdoc-args = ["-Zunstable-options", "--generate-link-to-definition"]
all-features = true
Loading
Oops, something went wrong.