From 18df3cddd7a1b39d45b0efb4ac917e97a470a8ac Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Thu, 21 Nov 2024 18:28:11 +0100 Subject: [PATCH] Prepare for adding more shaders --- experiments/2024-10-30/src/render/pipeline.rs | 8 ++------ experiments/2024-10-30/src/render/renderer.rs | 2 +- .../2024-10-30/src/render/shaders/mod.rs | 17 +++++++++++++++-- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/experiments/2024-10-30/src/render/pipeline.rs b/experiments/2024-10-30/src/render/pipeline.rs index f43b5535c..d5079dba8 100644 --- a/experiments/2024-10-30/src/render/pipeline.rs +++ b/experiments/2024-10-30/src/render/pipeline.rs @@ -8,7 +8,7 @@ pub struct Pipeline { impl Pipeline { pub fn new( device: &wgpu::Device, - config: &wgpu::SurfaceConfiguration, + _: &wgpu::SurfaceConfiguration, shaders: &Shaders, uniforms: &wgpu::Buffer, ) -> Self { @@ -44,11 +44,7 @@ impl Pipeline { entry_point: Some("fragment"), compilation_options: wgpu::PipelineCompilationOptions::default(), - targets: &[Some(wgpu::ColorTargetState { - format: config.format, - blend: Some(wgpu::BlendState::REPLACE), - write_mask: wgpu::ColorWrites::all(), - })], + targets: &shaders.fragment_targets, }), primitive: wgpu::PrimitiveState { topology: wgpu::PrimitiveTopology::TriangleList, diff --git a/experiments/2024-10-30/src/render/renderer.rs b/experiments/2024-10-30/src/render/renderer.rs index 4921528cf..a63403281 100644 --- a/experiments/2024-10-30/src/render/renderer.rs +++ b/experiments/2024-10-30/src/render/renderer.rs @@ -59,7 +59,7 @@ impl Renderer { usage: wgpu::BufferUsages::UNIFORM, }); - let shaders = Shaders::triangles(&device); + let shaders = Shaders::triangles(&device, &config); let pipeline = Pipeline::new(&device, &config, &shaders, &transform_buffer); diff --git a/experiments/2024-10-30/src/render/shaders/mod.rs b/experiments/2024-10-30/src/render/shaders/mod.rs index be42886f8..7d9c7124d 100644 --- a/experiments/2024-10-30/src/render/shaders/mod.rs +++ b/experiments/2024-10-30/src/render/shaders/mod.rs @@ -2,14 +2,27 @@ use glam::Mat4; pub struct Shaders { pub shader_module: wgpu::ShaderModule, + pub fragment_targets: [Option; 1], } impl Shaders { - pub fn triangles(device: &wgpu::Device) -> Self { + pub fn triangles( + device: &wgpu::Device, + config: &wgpu::SurfaceConfiguration, + ) -> Self { let shader_module = device.create_shader_module(wgpu::include_wgsl!("triangles.wgsl")); - Self { shader_module } + let fragment_targets = [Some(wgpu::ColorTargetState { + format: config.format, + blend: Some(wgpu::BlendState::REPLACE), + write_mask: wgpu::ColorWrites::all(), + })]; + + Self { + shader_module, + fragment_targets, + } } pub fn vertex_state(&self) -> wgpu::VertexState {