refactor
This commit is contained in:
parent
5261c02d18
commit
667c19907a
1 changed files with 54 additions and 67 deletions
|
@ -230,13 +230,10 @@ impl DirectXRenderer {
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
shadows,
|
shadows,
|
||||||
)?;
|
)?;
|
||||||
draw_normal(
|
self.pipelines.shadow_pipeline.draw(
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
&self.pipelines.shadow_pipeline,
|
|
||||||
&self.context.viewport,
|
&self.context.viewport,
|
||||||
&self.globals.global_params_buffer,
|
&self.globals.global_params_buffer,
|
||||||
D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
|
|
||||||
4,
|
|
||||||
shadows.len() as u32,
|
shadows.len() as u32,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -250,13 +247,10 @@ impl DirectXRenderer {
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
quads,
|
quads,
|
||||||
)?;
|
)?;
|
||||||
draw_normal(
|
self.pipelines.quad_pipeline.draw(
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
&self.pipelines.quad_pipeline,
|
|
||||||
&self.context.viewport,
|
&self.context.viewport,
|
||||||
&self.globals.global_params_buffer,
|
&self.globals.global_params_buffer,
|
||||||
D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
|
|
||||||
4,
|
|
||||||
quads.len() as u32,
|
quads.len() as u32,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -355,13 +349,10 @@ impl DirectXRenderer {
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
underlines,
|
underlines,
|
||||||
)?;
|
)?;
|
||||||
draw_normal(
|
self.pipelines.underline_pipeline.draw(
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
&self.pipelines.underline_pipeline,
|
|
||||||
&self.context.viewport,
|
&self.context.viewport,
|
||||||
&self.globals.global_params_buffer,
|
&self.globals.global_params_buffer,
|
||||||
D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
|
|
||||||
4,
|
|
||||||
underlines.len() as u32,
|
underlines.len() as u32,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -380,9 +371,8 @@ impl DirectXRenderer {
|
||||||
sprites,
|
sprites,
|
||||||
)?;
|
)?;
|
||||||
let texture_view = self.atlas.get_texture_view(texture_id);
|
let texture_view = self.atlas.get_texture_view(texture_id);
|
||||||
draw_with_texture(
|
self.pipelines.mono_sprites.draw_with_texture(
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
&self.pipelines.mono_sprites,
|
|
||||||
&texture_view,
|
&texture_view,
|
||||||
&self.context.viewport,
|
&self.context.viewport,
|
||||||
&self.globals.global_params_buffer,
|
&self.globals.global_params_buffer,
|
||||||
|
@ -405,9 +395,8 @@ impl DirectXRenderer {
|
||||||
sprites,
|
sprites,
|
||||||
)?;
|
)?;
|
||||||
let texture_view = self.atlas.get_texture_view(texture_id);
|
let texture_view = self.atlas.get_texture_view(texture_id);
|
||||||
draw_with_texture(
|
self.pipelines.poly_sprites.draw_with_texture(
|
||||||
&self.devices.device_context,
|
&self.devices.device_context,
|
||||||
&self.pipelines.poly_sprites,
|
|
||||||
&texture_view,
|
&texture_view,
|
||||||
&self.context.viewport,
|
&self.context.viewport,
|
||||||
&self.globals.global_params_buffer,
|
&self.globals.global_params_buffer,
|
||||||
|
@ -658,6 +647,55 @@ impl<T> PipelineState<T> {
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn draw(
|
||||||
|
&self,
|
||||||
|
device_context: &ID3D11DeviceContext,
|
||||||
|
viewport: &[D3D11_VIEWPORT],
|
||||||
|
global_params: &[Option<ID3D11Buffer>],
|
||||||
|
instance_count: u32,
|
||||||
|
) -> Result<()> {
|
||||||
|
unsafe {
|
||||||
|
device_context.VSSetShaderResources(1, Some(&self.view));
|
||||||
|
device_context.PSSetShaderResources(1, Some(&self.view));
|
||||||
|
device_context.IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
|
||||||
|
device_context.RSSetViewports(Some(viewport));
|
||||||
|
device_context.VSSetShader(&self.vertex, None);
|
||||||
|
device_context.PSSetShader(&self.fragment, None);
|
||||||
|
device_context.VSSetConstantBuffers(0, Some(global_params));
|
||||||
|
device_context.PSSetConstantBuffers(0, Some(global_params));
|
||||||
|
|
||||||
|
device_context.DrawInstanced(4, instance_count, 0, 0);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn draw_with_texture(
|
||||||
|
&self,
|
||||||
|
device_context: &ID3D11DeviceContext,
|
||||||
|
texture: &[Option<ID3D11ShaderResourceView>],
|
||||||
|
viewport: &[D3D11_VIEWPORT],
|
||||||
|
global_params: &[Option<ID3D11Buffer>],
|
||||||
|
sampler: &[Option<ID3D11SamplerState>],
|
||||||
|
instance_count: u32,
|
||||||
|
) -> Result<()> {
|
||||||
|
unsafe {
|
||||||
|
device_context.IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
|
||||||
|
device_context.RSSetViewports(Some(viewport));
|
||||||
|
device_context.VSSetShader(&self.vertex, None);
|
||||||
|
device_context.PSSetShader(&self.fragment, None);
|
||||||
|
device_context.VSSetConstantBuffers(0, Some(global_params));
|
||||||
|
device_context.PSSetConstantBuffers(0, Some(global_params));
|
||||||
|
device_context.VSSetShaderResources(1, Some(&self.view));
|
||||||
|
device_context.PSSetShaderResources(1, Some(&self.view));
|
||||||
|
device_context.PSSetSamplers(0, Some(sampler));
|
||||||
|
device_context.VSSetShaderResources(0, Some(texture));
|
||||||
|
device_context.PSSetShaderResources(0, Some(texture));
|
||||||
|
|
||||||
|
device_context.DrawInstanced(4, instance_count, 0, 0);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PathsPipelineState {
|
impl PathsPipelineState {
|
||||||
|
@ -1167,57 +1205,6 @@ fn draw_indirect(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw_normal<T>(
|
|
||||||
device_context: &ID3D11DeviceContext,
|
|
||||||
pipeline: &PipelineState<T>,
|
|
||||||
viewport: &[D3D11_VIEWPORT],
|
|
||||||
global_params: &[Option<ID3D11Buffer>],
|
|
||||||
topology: D3D_PRIMITIVE_TOPOLOGY,
|
|
||||||
vertex_count: u32,
|
|
||||||
instance_count: u32,
|
|
||||||
) -> Result<()> {
|
|
||||||
unsafe {
|
|
||||||
device_context.VSSetShaderResources(1, Some(&pipeline.view));
|
|
||||||
device_context.PSSetShaderResources(1, Some(&pipeline.view));
|
|
||||||
device_context.IASetPrimitiveTopology(topology);
|
|
||||||
device_context.RSSetViewports(Some(viewport));
|
|
||||||
device_context.VSSetShader(&pipeline.vertex, None);
|
|
||||||
device_context.PSSetShader(&pipeline.fragment, None);
|
|
||||||
device_context.VSSetConstantBuffers(0, Some(global_params));
|
|
||||||
device_context.PSSetConstantBuffers(0, Some(global_params));
|
|
||||||
|
|
||||||
device_context.DrawInstanced(vertex_count, instance_count, 0, 0);
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn draw_with_texture<T>(
|
|
||||||
device_context: &ID3D11DeviceContext,
|
|
||||||
pipeline: &PipelineState<T>,
|
|
||||||
texture: &[Option<ID3D11ShaderResourceView>],
|
|
||||||
viewport: &[D3D11_VIEWPORT],
|
|
||||||
global_params: &[Option<ID3D11Buffer>],
|
|
||||||
sampler: &[Option<ID3D11SamplerState>],
|
|
||||||
instance_count: u32,
|
|
||||||
) -> Result<()> {
|
|
||||||
unsafe {
|
|
||||||
device_context.IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
|
|
||||||
device_context.RSSetViewports(Some(viewport));
|
|
||||||
device_context.VSSetShader(&pipeline.vertex, None);
|
|
||||||
device_context.PSSetShader(&pipeline.fragment, None);
|
|
||||||
device_context.VSSetConstantBuffers(0, Some(global_params));
|
|
||||||
device_context.PSSetConstantBuffers(0, Some(global_params));
|
|
||||||
device_context.VSSetShaderResources(1, Some(&pipeline.view));
|
|
||||||
device_context.PSSetShaderResources(1, Some(&pipeline.view));
|
|
||||||
device_context.PSSetSamplers(0, Some(sampler));
|
|
||||||
device_context.VSSetShaderResources(0, Some(texture));
|
|
||||||
device_context.PSSetShaderResources(0, Some(texture));
|
|
||||||
|
|
||||||
device_context.DrawInstanced(4, instance_count, 0, 0);
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
const BUFFER_COUNT: usize = 3;
|
const BUFFER_COUNT: usize = 3;
|
||||||
|
|
||||||
mod shader_resources {
|
mod shader_resources {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue