Struct nannou_wgpu::RenderPipelineBuilder
source · pub struct RenderPipelineBuilder<'a> { /* private fields */ }
Expand description
A builder type to help simplify the construction of a RenderPipeline.
We’ve attempted to provide a suite of reasonable defaults in the case that none are provided.
Implementations§
source§impl<'a> RenderPipelineBuilder<'a>
impl<'a> RenderPipelineBuilder<'a>
pub const DEFAULT_SHADER_ENTRY_POINT: &'static str = "main"
pub const DEFAULT_FRONT_FACE: FrontFace = wgpu::FrontFace::Ccw
pub const DEFAULT_CULL_MODE: Option<Face> = None
pub const DEFAULT_POLYGON_MODE: PolygonMode = wgpu::PolygonMode::Fill
pub const DEFAULT_PRIMITIVE_TOPOLOGY: PrimitiveTopology = wgpu::PrimitiveTopology::TriangleList
pub const DEFAULT_PRIMITIVE: PrimitiveState = _
pub const DEFAULT_COLOR_FORMAT: TextureFormat = wgpu::TextureFormat::Rgba16Float
pub const DEFAULT_COLOR_BLEND: BlendComponent = _
pub const DEFAULT_ALPHA_BLEND: BlendComponent = _
pub const DEFAULT_COLOR_WRITE: ColorWrites = wgpu::ColorWrites::ALL
pub const DEFAULT_BLEND_STATE: BlendState = _
pub const DEFAULT_COLOR_STATE: ColorTargetState = _
pub const DEFAULT_DEPTH_FORMAT: TextureFormat = wgpu::TextureFormat::Depth32Float
pub const DEFAULT_DEPTH_WRITE_ENABLED: bool = true
pub const DEFAULT_DEPTH_COMPARE: CompareFunction = wgpu::CompareFunction::LessEqual
pub const DEFAULT_STENCIL_FRONT: StencilFaceState = wgpu::StencilFaceState::IGNORE
pub const DEFAULT_STENCIL_BACK: StencilFaceState = wgpu::StencilFaceState::IGNORE
pub const DEFAULT_STENCIL_READ_MASK: u32 = 0u32
pub const DEFAULT_STENCIL_WRITE_MASK: u32 = 0u32
pub const DEFAULT_STENCIL: StencilState = _
pub const DEFAULT_DEPTH_BIAS_CONSTANT: i32 = 0i32
pub const DEFAULT_DEPTH_BIAS_SLOPE_SCALE: f32 = 0f32
pub const DEFAULT_DEPTH_BIAS_CLAMP: f32 = 0f32
pub const DEFAULT_DEPTH_BIAS: DepthBiasState = _
pub const DEFAULT_UNCLIPPED_DEPTH: bool = false
pub const DEFAULT_DEPTH_STENCIL: DepthStencilState = _
pub const DEFAULT_SAMPLE_COUNT: u32 = 1u32
pub const DEFAULT_SAMPLE_MASK: u64 = 18_446_744_073_709_551_615u64
pub const DEFAULT_ALPHA_TO_COVERAGE_ENABLED: bool = false
pub const DEFAULT_MULTISAMPLE: MultisampleState = _
sourcepub fn from_layout(layout: &'a PipelineLayout, vs_mod: &'a ShaderModule) -> Self
pub fn from_layout(layout: &'a PipelineLayout, vs_mod: &'a ShaderModule) -> Self
Begin building the render pipeline for the given pipeline layout and the vertex shader module.
sourcepub fn from_layout_descriptor<T>(
layout_desc: T,
vs_mod: &'a ShaderModule
) -> Selfwhere
T: IntoPipelineLayoutDescriptor<'a>,
pub fn from_layout_descriptor<T>(
layout_desc: T,
vs_mod: &'a ShaderModule
) -> Selfwhere
T: IntoPipelineLayoutDescriptor<'a>,
Begin building the render pipeline for a pipeline with the given layout descriptor and the vertex shader module.
sourcepub fn vertex_entry_point(self, entry_point: &'a str) -> Self
pub fn vertex_entry_point(self, entry_point: &'a str) -> Self
The name of the entry point in the compiled shader.
There must be a function that returns void with this name in the shader.
sourcepub fn fragment_entry_point(self, entry_point: &'a str) -> Self
pub fn fragment_entry_point(self, entry_point: &'a str) -> Self
The name of the entry point in the compiled shader.
There must be a function that returns void with this name in the shader.
sourcepub fn fragment_shader(self, fs_mod: &'a ShaderModule) -> Self
pub fn fragment_shader(self, fs_mod: &'a ShaderModule) -> Self
Specify a compiled fragment shader for the render pipeline.
sourcepub fn primitive(self, p: PrimitiveState) -> Self
pub fn primitive(self, p: PrimitiveState) -> Self
Specify the full primitive state.
Describes the state of primitive assembly and rasterization in a render pipeline.
sourcepub fn front_face(self, front_face: FrontFace) -> Self
pub fn front_face(self, front_face: FrontFace) -> Self
The face to consider the front for the purpose of culling and stencil operations.
sourcepub fn primitive_topology(self, topology: PrimitiveTopology) -> Self
pub fn primitive_topology(self, topology: PrimitiveTopology) -> Self
Specify the primitive topology.
This represents the way vertices will be read from the VertexBuffer.
sourcepub fn polygon_mode(self, mode: PolygonMode) -> Self
pub fn polygon_mode(self, mode: PolygonMode) -> Self
Controls the way each polygon is rasterized. Can be either Fill
(default), Line
or
Point
.
Setting this to something other than Fill
requires Features::NON_FILL_POLYGON_MODE
to
be enabled.
sourcepub fn color_state(self, state: ColorTargetState) -> Self
pub fn color_state(self, state: ColorTargetState) -> Self
Specify the full color state for drawing to the output attachment.
If you have multiple output attachments, see the color_states
method.
sourcepub fn color_format(self, format: TextureFormat) -> Self
pub fn color_format(self, format: TextureFormat) -> Self
The texture formrat of the image that this pipelinew ill render to.
Must match the format of the corresponding color attachment.
sourcepub fn color_blend(self, color_blend: BlendComponent) -> Self
pub fn color_blend(self, color_blend: BlendComponent) -> Self
The color blending used for this pipeline.
sourcepub fn alpha_blend(self, alpha_blend: BlendComponent) -> Self
pub fn alpha_blend(self, alpha_blend: BlendComponent) -> Self
The alpha blending used for this pipeline.
sourcepub fn write_mask(self, mask: ColorWrites) -> Self
pub fn write_mask(self, mask: ColorWrites) -> Self
Mask which enables/disables writes to different color/alpha channel.
sourcepub fn depth_stencil(self, state: DepthStencilState) -> Self
pub fn depth_stencil(self, state: DepthStencilState) -> Self
Specify the full depth stencil state.
sourcepub fn depth_format(self, format: TextureFormat) -> Self
pub fn depth_format(self, format: TextureFormat) -> Self
Format of the depth/stencil buffer. Must be one of the depth formats. Must match the format of the depth/stencil attachment.
pub fn depth_write_enabled(self, enabled: bool) -> Self
sourcepub fn depth_compare(self, compare: CompareFunction) -> Self
pub fn depth_compare(self, compare: CompareFunction) -> Self
Comparison function used to compare depth values in the depth test.
sourcepub fn stencil(self, stencil: StencilState) -> Self
pub fn stencil(self, stencil: StencilState) -> Self
Specify the full set of stencil parameters.
sourcepub fn stencil_front(self, stencil: StencilFaceState) -> Self
pub fn stencil_front(self, stencil: StencilFaceState) -> Self
Front face mode.
sourcepub fn stencil_back(self, stencil: StencilFaceState) -> Self
pub fn stencil_back(self, stencil: StencilFaceState) -> Self
Back face mode.
sourcepub fn stencil_read_mask(self, mask: u32) -> Self
pub fn stencil_read_mask(self, mask: u32) -> Self
Stencil values are AND’d with this mask when reading and writing from the stencil buffer. Only low 8 bits are used.
sourcepub fn stencil_write_mask(self, mask: u32) -> Self
pub fn stencil_write_mask(self, mask: u32) -> Self
Stencil values are AND’d with this mask when writing to the stencil buffer. Only low 8 bits are used.
sourcepub fn depth_bias(self, bias: DepthBiasState) -> Self
pub fn depth_bias(self, bias: DepthBiasState) -> Self
Specify the full set of depth bias parameters.
Describes the biasing setting for the depth target.
sourcepub fn depth_bias_constant(self, constant: i32) -> Self
pub fn depth_bias_constant(self, constant: i32) -> Self
Constant depth biasing factor, in basic units of the depth format.
sourcepub fn depth_bias_slope_scale(self, scale: f32) -> Self
pub fn depth_bias_slope_scale(self, scale: f32) -> Self
Slope depth biasing factor.
sourcepub fn depth_bias_clamp(self, clamp: f32) -> Self
pub fn depth_bias_clamp(self, clamp: f32) -> Self
Depth bias clamp value (absolute).
sourcepub fn unclipped_depth(self, b: bool) -> Self
pub fn unclipped_depth(self, b: bool) -> Self
If enabled polygon depth is clamped to 0-1 range instead of being clipped.
Requires Features::DEPTH_CLIP_CONTROL
enabled.
sourcepub fn add_vertex_buffer_layout(self, d: VertexBufferLayout<'static>) -> Self
pub fn add_vertex_buffer_layout(self, d: VertexBufferLayout<'static>) -> Self
Add a new vertex buffer descriptor to the render pipeline.
sourcepub fn add_vertex_buffer<V>(self, attrs: &'static [VertexAttribute]) -> Self
pub fn add_vertex_buffer<V>(self, attrs: &'static [VertexAttribute]) -> Self
Short-hand for adding a descriptor to the render pipeline describing a buffer of vertices of the given vertex type.
The vertex stride is assumed to be equal to size_of::<V>()
. If this is not the case,
consider using add_vertex_buffer_layout
instead.
sourcepub fn add_instance_buffer<I>(self, attrs: &'static [VertexAttribute]) -> Self
pub fn add_instance_buffer<I>(self, attrs: &'static [VertexAttribute]) -> Self
Short-hand for adding a descriptor to the render pipeline describing a buffer of instances of the given vertex type.
sourcepub fn multisample(self, multisample: MultisampleState) -> Self
pub fn multisample(self, multisample: MultisampleState) -> Self
Specify the full multisample state.
sourcepub fn sample_count(self, sample_count: u32) -> Self
pub fn sample_count(self, sample_count: u32) -> Self
The number of samples calculated per pixel (for MSAA).
For non-multisampled textures, this should be 1 (the default).
sourcepub fn sample_mask(self, sample_mask: u64) -> Self
pub fn sample_mask(self, sample_mask: u64) -> Self
Bitmask that restricts the samples of a pixel modified by this pipeline. All samples can be enabled using the value !0 (the default).
sourcepub fn alpha_to_coverage_enabled(self, b: bool) -> Self
pub fn alpha_to_coverage_enabled(self, b: bool) -> Self
When enabled, produces another sample mask per pixel based on the alpha output value, that is ANDed with the sample_mask and the primitive coverage to restrict the set of samples affected by a primitive.
The implicit mask produced for alpha of zero is guaranteed to be zero, and for alpha of one is guaranteed to be all 1-s.
Disabled by default.
sourcepub fn build(self, device: &Device) -> RenderPipeline
pub fn build(self, device: &Device) -> RenderPipeline
Build the render pipeline layout, its descriptor and ultimately the pipeline itself with the specified parameters.
**Panic!**s in the following occur:
- A rasterization state field was specified but no fragment shader was given.
- A color state field was specified but no fragment shader was given.