Path: blob/main/crates/bevy_render/src/render_resource/pipeline.rs
9374 views
use crate::renderer::WgpuWrapper;1use bevy_utils::define_atomic_id;2use core::ops::Deref;34define_atomic_id!(RenderPipelineId);56/// A [`RenderPipeline`] represents a graphics pipeline and its stages (shaders), bindings and vertex buffers.7///8/// May be converted from and dereferences to a wgpu [`RenderPipeline`](wgpu::RenderPipeline).9/// Can be created via [`RenderDevice::create_render_pipeline`](crate::renderer::RenderDevice::create_render_pipeline).10#[derive(Clone, Debug)]11pub struct RenderPipeline {12id: RenderPipelineId,13value: WgpuWrapper<wgpu::RenderPipeline>,14}1516impl RenderPipeline {17#[inline]18pub fn id(&self) -> RenderPipelineId {19self.id20}21}2223impl From<wgpu::RenderPipeline> for RenderPipeline {24fn from(value: wgpu::RenderPipeline) -> Self {25RenderPipeline {26id: RenderPipelineId::new(),27value: WgpuWrapper::new(value),28}29}30}3132impl Deref for RenderPipeline {33type Target = wgpu::RenderPipeline;3435#[inline]36fn deref(&self) -> &Self::Target {37&self.value38}39}4041define_atomic_id!(ComputePipelineId);4243/// A [`ComputePipeline`] represents a compute pipeline and its single shader stage.44///45/// May be converted from and dereferences to a wgpu [`ComputePipeline`](wgpu::ComputePipeline).46/// Can be created via [`RenderDevice::create_compute_pipeline`](crate::renderer::RenderDevice::create_compute_pipeline).47#[derive(Clone, Debug)]48pub struct ComputePipeline {49id: ComputePipelineId,50value: WgpuWrapper<wgpu::ComputePipeline>,51}5253impl ComputePipeline {54/// Returns the [`ComputePipelineId`].55#[inline]56pub fn id(&self) -> ComputePipelineId {57self.id58}59}6061impl From<wgpu::ComputePipeline> for ComputePipeline {62fn from(value: wgpu::ComputePipeline) -> Self {63ComputePipeline {64id: ComputePipelineId::new(),65value: WgpuWrapper::new(value),66}67}68}6970impl Deref for ComputePipeline {71type Target = wgpu::ComputePipeline;7273#[inline]74fn deref(&self) -> &Self::Target {75&self.value76}77}787980