mirror of
https://github.com/bevyengine/bevy
synced 2025-01-07 02:38:59 +00:00
ffecb05a0a
This makes the [New Bevy Renderer](#2535) the default (and only) renderer. The new renderer isn't _quite_ ready for the final release yet, but I want as many people as possible to start testing it so we can identify bugs and address feedback prior to release. The examples are all ported over and operational with a few exceptions: * I removed a good portion of the examples in the `shader` folder. We still have some work to do in order to make these examples possible / ergonomic / worthwhile: #3120 and "high level shader material plugins" are the big ones. This is a temporary measure. * Temporarily removed the multiple_windows example: doing this properly in the new renderer will require the upcoming "render targets" changes. Same goes for the render_to_texture example. * Removed z_sort_debug: entity visibility sort info is no longer available in app logic. we could do this on the "render app" side, but i dont consider it a priority.
44 lines
1.2 KiB
Rust
44 lines
1.2 KiB
Rust
use bevy_reflect::Uuid;
|
|
use std::{ops::Deref, sync::Arc};
|
|
|
|
/// A [`BindGroup`] identifier.
|
|
#[derive(Copy, Clone, Hash, Eq, PartialEq, Debug)]
|
|
pub struct BindGroupId(Uuid);
|
|
|
|
/// Bind groups are responsible for binding render resources (e.g. buffers, textures, samplers)
|
|
/// to a [`TrackedRenderPass`](crate::render_phase::TrackedRenderPass).
|
|
/// This makes them accessible in the pipeline (shaders) as uniforms.
|
|
///
|
|
/// May be converted from and dereferences to a wgpu [`BindGroup`](wgpu::BindGroup).
|
|
/// Can be created via [`RenderDevice::create_bind_group`](crate::renderer::RenderDevice::create_bind_group).
|
|
#[derive(Clone, Debug)]
|
|
pub struct BindGroup {
|
|
id: BindGroupId,
|
|
value: Arc<wgpu::BindGroup>,
|
|
}
|
|
|
|
impl BindGroup {
|
|
/// Returns the [`BindGroupId`].
|
|
#[inline]
|
|
pub fn id(&self) -> BindGroupId {
|
|
self.id
|
|
}
|
|
}
|
|
|
|
impl From<wgpu::BindGroup> for BindGroup {
|
|
fn from(value: wgpu::BindGroup) -> Self {
|
|
BindGroup {
|
|
id: BindGroupId(Uuid::new_v4()),
|
|
value: Arc::new(value),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Deref for BindGroup {
|
|
type Target = wgpu::BindGroup;
|
|
|
|
#[inline]
|
|
fn deref(&self) -> &Self::Target {
|
|
&self.value
|
|
}
|
|
}
|