rename pipeline

This commit is contained in:
Junkui Zhang 2025-07-29 13:24:56 +08:00
parent ce67ce1482
commit d7b14d8dc5
3 changed files with 36 additions and 25 deletions

View file

@ -286,7 +286,8 @@ mod windows {
let modules = [
"quad",
"shadow",
"paths",
"path_rasterization",
"path_sprite",
"underline",
"monochrome_sprite",
"polychrome_sprite",

View file

@ -68,8 +68,8 @@ struct DirectXResources {
struct DirectXRenderPipelines {
shadow_pipeline: PipelineState<Shadow>,
quad_pipeline: PipelineState<Quad>,
paths_rasterization_pipeline: PathsPipelineState,
paths_sprite_pipeline: PipelineState<PathSprite>,
path_rasterization_pipeline: PathRasterizationPipelineState,
path_sprite_pipeline: PipelineState<PathSprite>,
underline_pipeline: PipelineState<Underline>,
mono_sprites: PipelineState<MonochromeSprite>,
poly_sprites: PipelineState<PolychromeSprite>,
@ -399,13 +399,13 @@ impl DirectXRenderer {
}
if !vertices.is_empty() {
self.pipelines.paths_rasterization_pipeline.update_buffer(
self.pipelines.path_rasterization_pipeline.update_buffer(
&self.devices.device,
&self.devices.device_context,
&sprites,
&vertices,
)?;
self.pipelines.paths_rasterization_pipeline.draw(
self.pipelines.path_rasterization_pipeline.draw(
&self.devices.device_context,
vertices.len() as u32,
&self.resources.viewport,
@ -460,14 +460,14 @@ impl DirectXRenderer {
vec![PathSprite { bounds }]
};
self.pipelines.paths_sprite_pipeline.update_buffer(
self.pipelines.path_sprite_pipeline.update_buffer(
&self.devices.device,
&self.devices.device_context,
&sprites,
)?;
// 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.resources.path_intermediate_srv.clone()],
&self.resources.viewport,
@ -655,9 +655,9 @@ impl DirectXRenderPipelines {
let shadow_pipeline =
PipelineState::new(device, "shadow_pipeline", ShaderModule::Shadow, 4)?;
let quad_pipeline = PipelineState::new(device, "quad_pipeline", ShaderModule::Quad, 64)?;
let paths_rasterization_pipeline = PathsPipelineState::new(device)?;
let paths_sprite_pipeline =
PipelineState::new(device, "paths_sprite_pipeline", ShaderModule::PathSprite, 1)?;
let path_rasterization_pipeline = PathRasterizationPipelineState::new(device)?;
let path_sprite_pipeline =
PipelineState::new(device, "path_sprite_pipeline", ShaderModule::PathSprite, 1)?;
let underline_pipeline =
PipelineState::new(device, "underline_pipeline", ShaderModule::Underline, 4)?;
let mono_sprites = PipelineState::new(
@ -676,8 +676,8 @@ impl DirectXRenderPipelines {
Ok(Self {
shadow_pipeline,
quad_pipeline,
paths_rasterization_pipeline,
paths_sprite_pipeline,
path_rasterization_pipeline,
path_sprite_pipeline,
underline_pipeline,
mono_sprites,
poly_sprites,
@ -769,7 +769,7 @@ struct PipelineState<T> {
_marker: std::marker::PhantomData<T>,
}
struct PathsPipelineState {
struct PathRasterizationPipelineState {
vertex: ID3D11VertexShader,
fragment: ID3D11PixelShader,
buffer: ID3D11Buffer,
@ -883,17 +883,19 @@ impl<T> PipelineState<T> {
}
}
impl PathsPipelineState {
impl PathRasterizationPipelineState {
fn new(device: &ID3D11Device) -> Result<Self> {
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())?,
raw_vertex_shader,
)
};
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())?
};
let buffer = create_buffer(device, std::mem::size_of::<PathRasterizationSprite>(), 32)?;
@ -1492,7 +1494,7 @@ mod shader_resources {
Quad,
Shadow,
Underline,
Paths,
PathRasterization,
PathSprite,
MonochromeSprite,
PolychromeSprite,
@ -1549,9 +1551,13 @@ mod shader_resources {
ShaderTarget::Vertex => UNDERLINE_VERTEX_BYTES,
ShaderTarget::Fragment => UNDERLINE_FRAGMENT_BYTES,
},
ShaderModule::Paths => match target {
ShaderTarget::Vertex => PATHS_VERTEX_BYTES,
ShaderTarget::Fragment => PATHS_FRAGMENT_BYTES,
ShaderModule::PathRasterization => match target {
ShaderTarget::Vertex => PATH_RASTERIZATION_VERTEX_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 {
ShaderTarget::Vertex => MONOCHROME_SPRITE_VERTEX_BYTES,
@ -1627,7 +1633,7 @@ mod shader_resources {
ShaderModule::Quad => "quad",
ShaderModule::Shadow => "shadow",
ShaderModule::Underline => "underline",
ShaderModule::Paths => "paths",
ShaderModule::PathRasterization => "path_rasterization",
ShaderModule::PathSprite => "path_sprite",
ShaderModule::MonochromeSprite => "monochrome_sprite",
ShaderModule::PolychromeSprite => "polychrome_sprite",

View file

@ -872,7 +872,7 @@ float4 shadow_fragment(ShadowFragmentInput input): SV_TARGET {
/*
**
** Paths
** Path Rasterization
**
*/
@ -919,7 +919,7 @@ struct PathFragmentInput {
nointerpolation Bounds bounds: BOUNDS;
};
PathVertexOutput paths_vertex(PathVertex input) {
PathVertexOutput path_rasterization_vertex(PathVertex input) {
PathRasterizationSprite sprite = path_rasterization_sprites[input.path_index];
PathVertexOutput output;
@ -944,7 +944,7 @@ PathVertexOutput paths_vertex(PathVertex input) {
return output;
}
float4 paths_fragment(PathFragmentInput input): SV_Target {
float4 path_rasterization_fragment(PathFragmentInput input): SV_Target {
Background background;
background.tag = input.tag;
background.color_space = input.color_space;
@ -960,7 +960,11 @@ float4 paths_fragment(PathFragmentInput input): SV_Target {
return color;
}
// --- path sprite --- //
/*
**
** Path Sprites
**
*/
struct PathSpriteVertexOutput {
float4 position: SV_Position;