rename pipeline
This commit is contained in:
parent
ce67ce1482
commit
d7b14d8dc5
3 changed files with 36 additions and 25 deletions
|
@ -286,7 +286,8 @@ mod windows {
|
||||||
let modules = [
|
let modules = [
|
||||||
"quad",
|
"quad",
|
||||||
"shadow",
|
"shadow",
|
||||||
"paths",
|
"path_rasterization",
|
||||||
|
"path_sprite",
|
||||||
"underline",
|
"underline",
|
||||||
"monochrome_sprite",
|
"monochrome_sprite",
|
||||||
"polychrome_sprite",
|
"polychrome_sprite",
|
||||||
|
|
|
@ -68,8 +68,8 @@ struct DirectXResources {
|
||||||
struct DirectXRenderPipelines {
|
struct DirectXRenderPipelines {
|
||||||
shadow_pipeline: PipelineState<Shadow>,
|
shadow_pipeline: PipelineState<Shadow>,
|
||||||
quad_pipeline: PipelineState<Quad>,
|
quad_pipeline: PipelineState<Quad>,
|
||||||
paths_rasterization_pipeline: PathsPipelineState,
|
path_rasterization_pipeline: PathRasterizationPipelineState,
|
||||||
paths_sprite_pipeline: PipelineState<PathSprite>,
|
path_sprite_pipeline: PipelineState<PathSprite>,
|
||||||
underline_pipeline: PipelineState<Underline>,
|
underline_pipeline: PipelineState<Underline>,
|
||||||
mono_sprites: PipelineState<MonochromeSprite>,
|
mono_sprites: PipelineState<MonochromeSprite>,
|
||||||
poly_sprites: PipelineState<PolychromeSprite>,
|
poly_sprites: PipelineState<PolychromeSprite>,
|
||||||
|
@ -399,13 +399,13 @@ impl DirectXRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !vertices.is_empty() {
|
if !vertices.is_empty() {
|
||||||
self.pipelines.paths_rasterization_pipeline.update_buffer(
|
self.pipelines.path_rasterization_pipeline.update_buffer(
|
||||||
&self.devices.device,
|
&self.devices.device,
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
&sprites,
|
&sprites,
|
||||||
&vertices,
|
&vertices,
|
||||||
)?;
|
)?;
|
||||||
self.pipelines.paths_rasterization_pipeline.draw(
|
self.pipelines.path_rasterization_pipeline.draw(
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
vertices.len() as u32,
|
vertices.len() as u32,
|
||||||
&self.resources.viewport,
|
&self.resources.viewport,
|
||||||
|
@ -460,14 +460,14 @@ impl DirectXRenderer {
|
||||||
vec![PathSprite { bounds }]
|
vec![PathSprite { bounds }]
|
||||||
};
|
};
|
||||||
|
|
||||||
self.pipelines.paths_sprite_pipeline.update_buffer(
|
self.pipelines.path_sprite_pipeline.update_buffer(
|
||||||
&self.devices.device,
|
&self.devices.device,
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
&sprites,
|
&sprites,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
// Draw the sprites with the path texture
|
// Draw the sprites with the path texture
|
||||||
self.pipelines.paths_sprite_pipeline.draw_with_texture(
|
self.pipelines.path_sprite_pipeline.draw_with_texture(
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
&[self.resources.path_intermediate_srv.clone()],
|
&[self.resources.path_intermediate_srv.clone()],
|
||||||
&self.resources.viewport,
|
&self.resources.viewport,
|
||||||
|
@ -655,9 +655,9 @@ impl DirectXRenderPipelines {
|
||||||
let shadow_pipeline =
|
let shadow_pipeline =
|
||||||
PipelineState::new(device, "shadow_pipeline", ShaderModule::Shadow, 4)?;
|
PipelineState::new(device, "shadow_pipeline", ShaderModule::Shadow, 4)?;
|
||||||
let quad_pipeline = PipelineState::new(device, "quad_pipeline", ShaderModule::Quad, 64)?;
|
let quad_pipeline = PipelineState::new(device, "quad_pipeline", ShaderModule::Quad, 64)?;
|
||||||
let paths_rasterization_pipeline = PathsPipelineState::new(device)?;
|
let path_rasterization_pipeline = PathRasterizationPipelineState::new(device)?;
|
||||||
let paths_sprite_pipeline =
|
let path_sprite_pipeline =
|
||||||
PipelineState::new(device, "paths_sprite_pipeline", ShaderModule::PathSprite, 1)?;
|
PipelineState::new(device, "path_sprite_pipeline", ShaderModule::PathSprite, 1)?;
|
||||||
let underline_pipeline =
|
let underline_pipeline =
|
||||||
PipelineState::new(device, "underline_pipeline", ShaderModule::Underline, 4)?;
|
PipelineState::new(device, "underline_pipeline", ShaderModule::Underline, 4)?;
|
||||||
let mono_sprites = PipelineState::new(
|
let mono_sprites = PipelineState::new(
|
||||||
|
@ -676,8 +676,8 @@ impl DirectXRenderPipelines {
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
shadow_pipeline,
|
shadow_pipeline,
|
||||||
quad_pipeline,
|
quad_pipeline,
|
||||||
paths_rasterization_pipeline,
|
path_rasterization_pipeline,
|
||||||
paths_sprite_pipeline,
|
path_sprite_pipeline,
|
||||||
underline_pipeline,
|
underline_pipeline,
|
||||||
mono_sprites,
|
mono_sprites,
|
||||||
poly_sprites,
|
poly_sprites,
|
||||||
|
@ -769,7 +769,7 @@ struct PipelineState<T> {
|
||||||
_marker: std::marker::PhantomData<T>,
|
_marker: std::marker::PhantomData<T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct PathsPipelineState {
|
struct PathRasterizationPipelineState {
|
||||||
vertex: ID3D11VertexShader,
|
vertex: ID3D11VertexShader,
|
||||||
fragment: ID3D11PixelShader,
|
fragment: ID3D11PixelShader,
|
||||||
buffer: ID3D11Buffer,
|
buffer: ID3D11Buffer,
|
||||||
|
@ -883,17 +883,19 @@ impl<T> PipelineState<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PathsPipelineState {
|
impl PathRasterizationPipelineState {
|
||||||
fn new(device: &ID3D11Device) -> Result<Self> {
|
fn new(device: &ID3D11Device) -> Result<Self> {
|
||||||
let (vertex, vertex_shader) = {
|
let (vertex, vertex_shader) = {
|
||||||
let raw_vertex_shader = RawShaderBytes::new(ShaderModule::Paths, ShaderTarget::Vertex)?;
|
let raw_vertex_shader =
|
||||||
|
RawShaderBytes::new(ShaderModule::PathRasterization, ShaderTarget::Vertex)?;
|
||||||
(
|
(
|
||||||
create_vertex_shader(device, raw_vertex_shader.as_bytes())?,
|
create_vertex_shader(device, raw_vertex_shader.as_bytes())?,
|
||||||
raw_vertex_shader,
|
raw_vertex_shader,
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
let fragment = {
|
let fragment = {
|
||||||
let raw_shader = RawShaderBytes::new(ShaderModule::Paths, ShaderTarget::Fragment)?;
|
let raw_shader =
|
||||||
|
RawShaderBytes::new(ShaderModule::PathRasterization, ShaderTarget::Fragment)?;
|
||||||
create_fragment_shader(device, raw_shader.as_bytes())?
|
create_fragment_shader(device, raw_shader.as_bytes())?
|
||||||
};
|
};
|
||||||
let buffer = create_buffer(device, std::mem::size_of::<PathRasterizationSprite>(), 32)?;
|
let buffer = create_buffer(device, std::mem::size_of::<PathRasterizationSprite>(), 32)?;
|
||||||
|
@ -1492,7 +1494,7 @@ mod shader_resources {
|
||||||
Quad,
|
Quad,
|
||||||
Shadow,
|
Shadow,
|
||||||
Underline,
|
Underline,
|
||||||
Paths,
|
PathRasterization,
|
||||||
PathSprite,
|
PathSprite,
|
||||||
MonochromeSprite,
|
MonochromeSprite,
|
||||||
PolychromeSprite,
|
PolychromeSprite,
|
||||||
|
@ -1549,9 +1551,13 @@ mod shader_resources {
|
||||||
ShaderTarget::Vertex => UNDERLINE_VERTEX_BYTES,
|
ShaderTarget::Vertex => UNDERLINE_VERTEX_BYTES,
|
||||||
ShaderTarget::Fragment => UNDERLINE_FRAGMENT_BYTES,
|
ShaderTarget::Fragment => UNDERLINE_FRAGMENT_BYTES,
|
||||||
},
|
},
|
||||||
ShaderModule::Paths => match target {
|
ShaderModule::PathRasterization => match target {
|
||||||
ShaderTarget::Vertex => PATHS_VERTEX_BYTES,
|
ShaderTarget::Vertex => PATH_RASTERIZATION_VERTEX_BYTES,
|
||||||
ShaderTarget::Fragment => PATHS_FRAGMENT_BYTES,
|
ShaderTarget::Fragment => PATH_RASTERIZATION_FRAGMENT_BYTES,
|
||||||
|
},
|
||||||
|
ShaderModule::PathSprite => match target {
|
||||||
|
ShaderTarget::Vertex => PATH_SPRITE_VERTEX_BYTES,
|
||||||
|
ShaderTarget::Fragment => PATH_SPRITE_FRAGMENT_BYTES,
|
||||||
},
|
},
|
||||||
ShaderModule::MonochromeSprite => match target {
|
ShaderModule::MonochromeSprite => match target {
|
||||||
ShaderTarget::Vertex => MONOCHROME_SPRITE_VERTEX_BYTES,
|
ShaderTarget::Vertex => MONOCHROME_SPRITE_VERTEX_BYTES,
|
||||||
|
@ -1627,7 +1633,7 @@ mod shader_resources {
|
||||||
ShaderModule::Quad => "quad",
|
ShaderModule::Quad => "quad",
|
||||||
ShaderModule::Shadow => "shadow",
|
ShaderModule::Shadow => "shadow",
|
||||||
ShaderModule::Underline => "underline",
|
ShaderModule::Underline => "underline",
|
||||||
ShaderModule::Paths => "paths",
|
ShaderModule::PathRasterization => "path_rasterization",
|
||||||
ShaderModule::PathSprite => "path_sprite",
|
ShaderModule::PathSprite => "path_sprite",
|
||||||
ShaderModule::MonochromeSprite => "monochrome_sprite",
|
ShaderModule::MonochromeSprite => "monochrome_sprite",
|
||||||
ShaderModule::PolychromeSprite => "polychrome_sprite",
|
ShaderModule::PolychromeSprite => "polychrome_sprite",
|
||||||
|
|
|
@ -872,7 +872,7 @@ float4 shadow_fragment(ShadowFragmentInput input): SV_TARGET {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
**
|
**
|
||||||
** Paths
|
** Path Rasterization
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -919,7 +919,7 @@ struct PathFragmentInput {
|
||||||
nointerpolation Bounds bounds: BOUNDS;
|
nointerpolation Bounds bounds: BOUNDS;
|
||||||
};
|
};
|
||||||
|
|
||||||
PathVertexOutput paths_vertex(PathVertex input) {
|
PathVertexOutput path_rasterization_vertex(PathVertex input) {
|
||||||
PathRasterizationSprite sprite = path_rasterization_sprites[input.path_index];
|
PathRasterizationSprite sprite = path_rasterization_sprites[input.path_index];
|
||||||
|
|
||||||
PathVertexOutput output;
|
PathVertexOutput output;
|
||||||
|
@ -944,7 +944,7 @@ PathVertexOutput paths_vertex(PathVertex input) {
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
float4 paths_fragment(PathFragmentInput input): SV_Target {
|
float4 path_rasterization_fragment(PathFragmentInput input): SV_Target {
|
||||||
Background background;
|
Background background;
|
||||||
background.tag = input.tag;
|
background.tag = input.tag;
|
||||||
background.color_space = input.color_space;
|
background.color_space = input.color_space;
|
||||||
|
@ -960,7 +960,11 @@ float4 paths_fragment(PathFragmentInput input): SV_Target {
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- path sprite --- //
|
/*
|
||||||
|
**
|
||||||
|
** Path Sprites
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
struct PathSpriteVertexOutput {
|
struct PathSpriteVertexOutput {
|
||||||
float4 position: SV_Position;
|
float4 position: SV_Position;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue