pub struct PipelineBuilder {
pub device: Arc<VulkanDevice>,
pub mesh: Arc<GenericMeshWithMaterial>,
pub shaders: Arc<DrawShaders>,
pub descriptor_sets: Arc<DescriptorSets>,
pub renderpass: Arc<VulkanRenderPass>,
pub pipeline_cache: Arc<VulkanPipelineCache>,
pub rasterization_state_ci: VkPipelineRasterizationStateCreateInfo,
pub msaa_state_ci: VkPipelineMultisampleStateCreateInfo,
pub depth_stenctil_ci: VkPipelineDepthStencilStateCreateInfo,
pub color_blend_state_ci: VkPipelineColorBlendStateCreateInfo,
pub color_blend_attachment_states: Vec<VkPipelineColorBlendAttachmentState>,
pub dynamic_states: HashSet<VkDynamicState>,
/* private fields */
}Expand description
Build a pipeline step by step
Fields§
§device: Arc<VulkanDevice>The associated device
mesh: Arc<GenericMeshWithMaterial>The meshes to draw
shaders: Arc<DrawShaders>The shaders to use
descriptor_sets: Arc<DescriptorSets>The descriptor sets
renderpass: Arc<VulkanRenderPass>The render target props
pipeline_cache: Arc<VulkanPipelineCache>The pipeline cache
rasterization_state_ci: VkPipelineRasterizationStateCreateInfoThe rasterization state create info
msaa_state_ci: VkPipelineMultisampleStateCreateInfoThe MSAA state create info
depth_stenctil_ci: VkPipelineDepthStencilStateCreateInfoThe depth stencil state create info
color_blend_state_ci: VkPipelineColorBlendStateCreateInfoThe color blend state create info
color_blend_attachment_states: Vec<VkPipelineColorBlendAttachmentState>The color blend attachment states
dynamic_states: HashSet<VkDynamicState>The dynamic states
Implementations§
Source§impl PipelineBuilder
impl PipelineBuilder
Sourcepub fn new(
device: Arc<VulkanDevice>,
mesh: Arc<GenericMeshWithMaterial>,
shaders: Arc<DrawShaders>,
desc_pool: Arc<DescriptorPool>,
desc_props: Arc<DescriptorProps>,
renderpass: Arc<VulkanRenderPass>,
pipeline_cache: Arc<VulkanPipelineCache>,
) -> Result<Self, VulkanError>
pub fn new( device: Arc<VulkanDevice>, mesh: Arc<GenericMeshWithMaterial>, shaders: Arc<DrawShaders>, desc_pool: Arc<DescriptorPool>, desc_props: Arc<DescriptorProps>, renderpass: Arc<VulkanRenderPass>, pipeline_cache: Arc<VulkanPipelineCache>, ) -> Result<Self, VulkanError>
Create the PipelineBuilder
Sourcepub fn set_depth_clamp_mode(self, enabled: bool) -> Self
pub fn set_depth_clamp_mode(self, enabled: bool) -> Self
Set depth clamp enabled/disabled
Sourcepub fn set_disable_fragment_stage(self, disabled: bool) -> Self
pub fn set_disable_fragment_stage(self, disabled: bool) -> Self
Set depth clamp enabled/disabled
Sourcepub fn set_polygon_mode(self, mode: VkPolygonMode) -> Self
pub fn set_polygon_mode(self, mode: VkPolygonMode) -> Self
Set polygon mode
Sourcepub fn set_cull_mode(self, mode: VkCullModeFlags) -> Self
pub fn set_cull_mode(self, mode: VkCullModeFlags) -> Self
Set cull mode
Sourcepub fn set_front_face(self, front_face: VkFrontFace) -> Self
pub fn set_front_face(self, front_face: VkFrontFace) -> Self
Set front face
Sourcepub fn enable_depth_bias(
self,
constant: f32,
slope_scale: f32,
clamp: f32,
) -> Self
pub fn enable_depth_bias( self, constant: f32, slope_scale: f32, clamp: f32, ) -> Self
Set enable depth bias mode
Sourcepub fn disable_depth_bias(self) -> Self
pub fn disable_depth_bias(self) -> Self
Set disable depth bias mode
Sourcepub fn set_line_width(self, line_width: f32) -> Self
pub fn set_line_width(self, line_width: f32) -> Self
Set line width
Sourcepub fn set_msaa_samples(self, msaa_samples: VkSampleCountFlagBits) -> Self
pub fn set_msaa_samples(self, msaa_samples: VkSampleCountFlagBits) -> Self
Set MSAA sample cound
Sourcepub fn set_msaa_alpha_to_coverage(self, enabled: bool) -> Self
pub fn set_msaa_alpha_to_coverage(self, enabled: bool) -> Self
Set use dithering to handle MSAA alpha
Sourcepub fn set_msaa_super_sampling(self, quality: Option<f32>) -> Self
pub fn set_msaa_super_sampling(self, quality: Option<f32>) -> Self
Set MSAA supersampling state
Sourcepub fn set_depth_test(self, enabled: bool) -> Self
pub fn set_depth_test(self, enabled: bool) -> Self
Set depth test state
Sourcepub fn set_depth_write(self, enabled: bool) -> Self
pub fn set_depth_write(self, enabled: bool) -> Self
Set depth write state
Sourcepub fn set_depth_compare_mode(self, mode: VkCompareOp) -> Self
pub fn set_depth_compare_mode(self, mode: VkCompareOp) -> Self
Set depth compare mode
Sourcepub fn set_depth_bound_test_mode(self, bounds: Option<(f32, f32)>) -> Self
pub fn set_depth_bound_test_mode(self, bounds: Option<(f32, f32)>) -> Self
Set depth bound test mode
Sourcepub fn set_stencil_test(self, enabled: bool) -> Self
pub fn set_stencil_test(self, enabled: bool) -> Self
Set stencil test mode
Sourcepub fn set_stencil_mode(
self,
front_face: VkStencilOpState,
back_face: VkStencilOpState,
) -> Self
pub fn set_stencil_mode( self, front_face: VkStencilOpState, back_face: VkStencilOpState, ) -> Self
Set stencil mode
Sourcepub fn normal_blend_mode() -> VkPipelineColorBlendAttachmentState
pub fn normal_blend_mode() -> VkPipelineColorBlendAttachmentState
Return a color blend mode for normal alpha blend
Sourcepub fn additive_blend_mode() -> VkPipelineColorBlendAttachmentState
pub fn additive_blend_mode() -> VkPipelineColorBlendAttachmentState
Return a color blend mode for additive blend
Sourcepub fn disabled_blend_mode() -> VkPipelineColorBlendAttachmentState
pub fn disabled_blend_mode() -> VkPipelineColorBlendAttachmentState
Return a color blend mode for no blending
Sourcepub fn set_color_blend_mode(
self,
attachment_index: usize,
color_blend_mode: VkPipelineColorBlendAttachmentState,
) -> Self
pub fn set_color_blend_mode( self, attachment_index: usize, color_blend_mode: VkPipelineColorBlendAttachmentState, ) -> Self
Set alpha blend mode
Sourcepub fn add_dynamic_state(self, dynamic_state: VkDynamicState) -> Self
pub fn add_dynamic_state(self, dynamic_state: VkDynamicState) -> Self
Add a dynamic state
Sourcepub fn remove_dynamic_state(self, dynamic_state: VkDynamicState) -> Self
pub fn remove_dynamic_state(self, dynamic_state: VkDynamicState) -> Self
Remove a dynamic state
Sourcepub fn build(self) -> Result<Pipeline, VulkanError>
pub fn build(self) -> Result<Pipeline, VulkanError>
Generate the pipeline
Trait Implementations§
Source§impl Clone for PipelineBuilder
impl Clone for PipelineBuilder
Source§fn clone(&self) -> PipelineBuilder
fn clone(&self) -> PipelineBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PipelineBuilder
impl Debug for PipelineBuilder
Auto Trait Implementations§
impl Freeze for PipelineBuilder
impl !RefUnwindSafe for PipelineBuilder
impl !Send for PipelineBuilder
impl !Sync for PipelineBuilder
impl Unpin for PipelineBuilder
impl !UnwindSafe for PipelineBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.