diff options
Diffstat (limited to 'src/pipeline/raster.rs')
-rw-r--r-- | src/pipeline/raster.rs | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/src/pipeline/raster.rs b/src/pipeline/raster.rs deleted file mode 100644 index 337ef94..0000000 --- a/src/pipeline/raster.rs +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright (c) 2016 The vulkano developers -// Licensed under the Apache License, Version 2.0 -// <LICENSE-APACHE or -// https://www.apache.org/licenses/LICENSE-2.0> or the MIT -// license <LICENSE-MIT or https://opensource.org/licenses/MIT>, -// at your option. All files in the project carrying such -// notice may not be copied, modified, or distributed except -// according to those terms. - -//! Stage when triangles are turned into pixels. -//! -//! The rasterization is the stage when collections of triangles are turned into collections -//! of pixels or samples. -//! - -/// State of the rasterizer. -#[derive(Clone, Debug)] -pub struct Rasterization { - /// If true, then the depth value of the vertices will be clamped to [0.0 ; 1.0]. If false, - /// fragments whose depth is outside of this range will be discarded. - pub depth_clamp: bool, - - /// If true, all the fragments will be discarded. This is usually used when your vertex shader - /// has some side effects and you don't need to run the fragment shader. - pub rasterizer_discard: bool, - - /// This setting can ask the rasterizer to downgrade triangles into lines or points, or lines - /// into points. - pub polygon_mode: PolygonMode, - - /// Specifies whether front faces or back faces should be discarded, or none, or both. - pub cull_mode: CullMode, - - /// Specifies which triangle orientation corresponds to the front or the triangle. - pub front_face: FrontFace, - - /// Width, in pixels, of lines when drawing lines. - /// - /// If you pass `None`, then this state will be considered as dynamic and the line width will - /// need to be set when you build the command buffer. - pub line_width: Option<f32>, - - pub depth_bias: DepthBiasControl, -} - -impl Default for Rasterization { - #[inline] - fn default() -> Rasterization { - Rasterization { - depth_clamp: false, - rasterizer_discard: false, - polygon_mode: Default::default(), - cull_mode: Default::default(), - front_face: Default::default(), - line_width: Some(1.0), - depth_bias: DepthBiasControl::Disabled, - } - } -} - -#[derive(Copy, Clone, Debug)] -pub enum DepthBiasControl { - Disabled, - Dynamic, - Static(DepthBias), -} - -impl DepthBiasControl { - #[inline] - pub fn is_dynamic(&self) -> bool { - match *self { - DepthBiasControl::Dynamic => true, - _ => false, - } - } -} - -#[derive(Copy, Clone, Debug)] -pub struct DepthBias { - pub constant_factor: f32, - /// Requires the `depth_bias_clamp` feature to be enabled. - pub clamp: f32, - pub slope_factor: f32, -} - -/// Specifies the culling mode. -/// -/// This setting works in pair with `front_face`. The `front_face` setting tells the GPU whether -/// clockwise or counter-clockwise correspond to the front and the back of each triangle. Then -/// `cull_mode` lets you specify whether front faces should be discarded, back faces should be -/// discarded, or none, or both. -#[derive(Copy, Clone, Debug)] -#[repr(u32)] -pub enum CullMode { - /// No culling. - None = ash::vk::CullModeFlags::NONE.as_raw(), - /// The faces facing the front of the screen (ie. facing the user) will be removed. - Front = ash::vk::CullModeFlags::FRONT.as_raw(), - /// The faces facing the back of the screen will be removed. - Back = ash::vk::CullModeFlags::BACK.as_raw(), - /// All faces will be removed. - FrontAndBack = ash::vk::CullModeFlags::FRONT_AND_BACK.as_raw(), -} - -impl From<CullMode> for ash::vk::CullModeFlags { - #[inline] - fn from(val: CullMode) -> Self { - Self::from_raw(val as u32) - } -} - -impl Default for CullMode { - #[inline] - fn default() -> CullMode { - CullMode::None - } -} - -/// Specifies which triangle orientation corresponds to the front or the triangle. -#[derive(Copy, Clone, Debug)] -#[repr(i32)] -pub enum FrontFace { - /// Triangles whose vertices are oriented counter-clockwise on the screen will be considered - /// as facing their front. Otherwise they will be considered as facing their back. - CounterClockwise = ash::vk::FrontFace::COUNTER_CLOCKWISE.as_raw(), - - /// Triangles whose vertices are oriented clockwise on the screen will be considered - /// as facing their front. Otherwise they will be considered as facing their back. - Clockwise = ash::vk::FrontFace::CLOCKWISE.as_raw(), -} - -impl From<FrontFace> for ash::vk::FrontFace { - #[inline] - fn from(val: FrontFace) -> Self { - Self::from_raw(val as i32) - } -} - -impl Default for FrontFace { - #[inline] - fn default() -> FrontFace { - FrontFace::CounterClockwise - } -} - -#[derive(Copy, Clone, Debug, PartialEq, Eq)] -#[repr(i32)] -pub enum PolygonMode { - Fill = ash::vk::PolygonMode::FILL.as_raw(), - Line = ash::vk::PolygonMode::LINE.as_raw(), - Point = ash::vk::PolygonMode::POINT.as_raw(), -} - -impl From<PolygonMode> for ash::vk::PolygonMode { - #[inline] - fn from(val: PolygonMode) -> Self { - Self::from_raw(val as i32) - } -} - -impl Default for PolygonMode { - #[inline] - fn default() -> PolygonMode { - PolygonMode::Fill - } -} |